2.2.0 • Published 3 years ago
@kennysng/c-promise v2.2.0
c-promise
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:
setTimeout()
sleep to wait for cancel requestcheck 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