Я хочу быть в состоянии отменить мои обещания и использовать что-то вдохновение:
const makeCancelable = promise => {
let rejectFn;
const wrappedPromise = new Promise((resolve, reject) => {
rejectFn = reject;
Promise.resolve(promise)
.then(resolve)
.catch(reject);
});
wrappedPromise.cancel = () => {
rejectFn({ canceled: true });
};
return wrappedPromise;
};
Использование:
const cancelablePromise = makeCancelable(myPromise); // ... cancelablePromise.cancel();
Раствор выше работает, но я хотел бы улучшить его и не хочу использовать Bluebirdjs. или Наблюдается (Ну, по крайней мере, не в данный момент …)
Я хотел бы иметь это как прототип Обещание объект, так что я мог бы позвонить Отмена на любое родное обещание.
Любой, кто готов предложить простейшее направление реализации?
Оригинал: “https://dev.to/mckabue/cancellable-promises-od5”