$ .Deferred:如何检测何时执行了每个promise

$ .Deferred:如何检测何时执行了每个promise,第1张

$ .Deferred:如何检测何时执行了每个promise

更复杂的诺言库有一个

allSettled()
类似的功能
Q
Promise.settle
类似bluebird。

在jQuery中,您也可以自己实现这样的功能,并

$
使用它扩展名称空间,但这仅在您经常需要且性能优化的情况下才需要。

一个更简单的解决方案是为您正在等待的每个人创建一个新的promise,即使底层的promise被拒绝,也要兑现它们。然后,您可以

$.when()
毫无问题地使用它们。简而言之:

// using Underscore's .invoke() method:$.when.apply(null, _.invoke(promises, "then", null, $.when)).done(…)

更稳定:

$.when.apply($, $.map(promises, function(p) {    return p.then(null, function() {        return $.Deferred().resolveWith(this, arguments);    });})).then(…);

您可能需要对

then
回调进行一些更改,以区分final中已完成和已拒绝的结果
done



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5101249.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存