gpt4 book ai didi

javascript - 拒绝然后解决 Q Promise

转载 作者:行者123 更新时间:2023-12-03 11:30:44 25 4
gpt4 key购买 nike

我见过类似这样的代码:

var defer = Q.defer();
// do something, here's the callback
if (err) {
defer.reject({err: err})
}
defer.resolve({success: data});
// close callback
return defer.promise;

如果一个 Promise 首先被拒绝,然后被解决,那么“拒绝”似乎仍然存在。

当我第一次看到这个模式时,我倾向于建议将解析包装在 else 中,但由于它按原样工作,这是一个可以接受的模式吗?

拒绝然后解决 promise 是否会出现问题?

看来,如果您解决然后拒绝,则解决方案仍然存在。那么无论哪个先发生,就是“粘”?

最佳答案

So whichever happens first, is what "sticks"?

是的,完全正确。一旦确定(履行或拒绝), promise 的状态就是不可变的。所以不,这里不会出现问题,如果拒绝首先发生,则 promise 将被“锁定”为被拒绝。

但是,请考虑一下单个 else 是否实际上无法提高代码质量。更少的代码行并不一定会提高代码的可读性!我之所以这么说,是因为如果你看到 if/else,就更容易快速理解会发生什么。如果其他人必须查看您的代码,并且他们一开始也不知道 promise 在解决后是不可变的,该怎么办?

Chapter 3 of "You Don't Know JS (async & performance)"是更充分地兑现 promise 的绝佳资源。 Promises A+ specification 也是如此,Q 符合。后者更像是“客观事实来源”,但它更难阅读(好吧,它是一个规范)。

关于javascript - 拒绝然后解决 Q Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26743923/

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