栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

$ .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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430318.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号