2.2.0 • Published 3 years ago

@kennysng/c-promise v2.2.0

Weekly downloads
29
License
Apache-2.0
Repository
github
Last release
3 years ago

c-promise

npm version

This is a cancelable Promise library.

Usage

new CancelablePromise(async (resolve, reject, check, canceled) => {
  try {
    // async tasks
    await asyncTask()
    await asyncTask()

    // check if cancel() is called
    await check()
    
    await asyncTask()
    await asyncTask()

    // return result
    return resolve()
  }
  catch (e) {
    // emit canceled event
    if (e instanceof CancelError) return canceled()

    // throw error
    return reject(e)
  }
})

new CancelablePromise(anotherCancelablePromise, async (promise, resolve, reject, check, canceled) => {
  try {
    // async tasks
    await asyncTask()
    await asyncTask()

    // check if cancel() is called
    await check()

    // wait for the promise
    await promise

    // return result
    return resolve()
  }
  catch (e) {
    // emit canceled event
    if (e instanceof CancelError) return canceled()

    // throw error
    return reject(e)
  }
})

new CancelablePromise(createAnotherCancelablePromiseFn, async (createFn, resolve, reject, check, canceled) => {
  try {
    // async tasks
    await asyncTask()
    await asyncTask()

    // check if cancel() is called
    await check()

    // create and wait for the promise
    await createFn()

    // return result
    return resolve()
  }
  catch (e) {
    // emit canceled event
    if (e instanceof CancelError) return canceled()

    // throw error
    return reject(e)
  }
})

Pay attention

check() function consists of 2 steps:

  1. setTimeout() sleep to wait for cancel request

  2. check if canceled. It true, throw CancelError

Note that the setTimeout() step will put great overhead on computation time. Avoid abuse use of check(). Only check at critical point.

2.2.0

3 years ago

2.1.0

6 years ago

2.0.0

6 years ago

2.0.0-rc.2

6 years ago

2.0.0-rc.1

6 years ago

1.5.0

6 years ago

1.4.1

6 years ago

1.4.0

6 years ago

1.3.3

6 years ago

1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.7

6 years ago

1.1.6

6 years ago

1.1.5

6 years ago

1.1.4

6 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago