gpt4 book ai didi

javascript - 取消 ES6 promise

转载 作者:行者123 更新时间:2023-11-29 21:24:31 25 4
gpt4 key购买 nike

是否可以通过调用 Promise.reject(reason) 来取消 ES6 Promise?

像这样:

Promise.resolve().then(function () {

return 'foo';

}).then(function () {

return console.log('we were here');

}).then(function () {

return Promise.reject({type: 'canceled'})

}).then(function () {

return console.log('never visited');

}).catch(function (e) {
console.log(e);
});

通过 Promise.reject“取消”promise 有什么缺点吗?

最佳答案

不,您不能使用 Promise.reject() 取消 promise 。

Promise.reject() 只是一个辅助函数,它返回一个新的已经被拒绝的 promise 。

举个例子,如果你已经有一个 promise p,那么就没有办法取消它:

var p = fetch("flower.png");
// No way to reject p or "cancel" the fetch.

重要的是,p 不是fetch 的控制界面。您所能做的就是拒绝后续链接的 promise :

p = p.then(result => cancel? Promise.reject(new Error("Cancelled")) : result);

或者干脆忽略p,效果一样。

也就是说,您的代码看起来不错,但与您的问题不符。大多数人认为这是错误处理或拒绝传播,而不是取消,尽管它确实打破了后续异步操作的链条,如您所示。

关于javascript - 取消 ES6 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37823386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com