原文链接: p-cancelable 一个比较小的可取消的Promise库
下一篇: regl-camera 相机插件
这个库比较小, 至少比bluebird小太多了, 用法上类似, 但是不和bluebird兼容
https://github.com/sindresorhus/p-cancelable
取消的时候默认抛出错误, cancel时不能传递消息, bluebird也不行, cancel没有入参的
const CPromise = require("p-cancelable");
const p1 = new CPromise((resolve, reject, onCancel) => {
setTimeout(() => {
resolve(111);
}, 2000);
});
Promise.all([p1]).then((data) => {
console.log("data", data);
});
const p2 = new CPromise((resolve, reject, onCancel) => {
onCancel.shouldReject = false;
onCancel((msg) => {
console.log(onCancel.isCanceled);
console.log("msg", msg);
// reject()
});
setTimeout(() => {
resolve(222);
}, 2000);
});
setTimeout(() => {
p2.cancel("3333");
}, 1000);
setTimeout(() => {
p2.cancel("4444");
}, 1500);
p2.then((data) => {
console.log("123213", data);
});