在JavaScript中如何取消一个Promise?

16
var promise1 = new Promise(function(resolve, reject) { 
       // ajax api call
});
var promise2 = new Promise(function(resolve, reject) { 
       // ajax api call
});

我希望你能够像这样做 -

if(a < b) {
  promise1.cancel();
}

9
承诺是不可取消的。该提案因Google反对而被撤回。 - Felix Kling
看一下这个问题 - https://dev59.com/il0b5IYBdhLWcg3wM-0c - Ajay Narain Mathur
请看这里:https://dev59.com/C10a5IYBdhLWcg3whJDW - Mihai Alexandru-Ionut
承诺是不可取消的,参见此链接 - Saurabh Agrawal
尽管如此,仍然有关于这个问题的讨论,您可能想在 https://esdiscuss.org/ 上进行搜索。 - Felix Kling
也许你可以描述一下你真正想要解决的问题,这样大家就可以帮助你使用支持的功能来解决它。 - jfriend00
1个回答

8
您无法取消一个Promise,但您可以使用then链接您的Promise,并在任何时候拒绝它。
new Promise((resolve, reject) => {
    // step 1
})
.then((result) => {
    if (!result) {
        // Reject the promise chain
        throw 'cancel';
    } else {
        return ... // step 2
    }
})
.catch(err => {
    // cancelled
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接