【发布时间】:2021-09-20 04:38:58
【问题描述】:
这是一个代码示例:
var promise = new Promise((resolve, reject) => {
resolve("resolved");
});
promise.abort = function () {
console.log("abort!");
};
console.log(promise.abort());
function bar() {
return promise.then((value) => {
return value + "!";
});
}
newPromise = bar();
newPromise.then(value => {
console.log(value);
})
console.log(newPromise.abort());
我在一个 promise 中添加了一个自定义函数。调用函数abort() 按预期工作。
在函数bar() 中,我使用then() 方法注销解析的值。
我知道bar() 的返回值是一个新的承诺。但它失去了自定义函数abort()。
如何将自定义函数继承到新的 Promise 中?
【问题讨论】:
-
一个promise不应该有一个方法来中止它。把它放在一个单独的地方,然后直接调用那个函数——不是在 promise 上,也绝对不是在后代 promise 上。你希望
promise.then(_ => timeout(500)).abort()做什么?
标签: javascript promise cancellation