How to AND jquery promises?
本问题已经有最佳答案,请猛点这里访问。
我想要一个承诺,当两个承诺promise1和promise2完全解决时,它本身会解决。 我该怎么做呢?
这是我目前可怕的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var c = 0; var d = $.Deferred(); promise1.then(() => { c++; if (c == 2) { d.resolve(); } }); promise2.then(() => { c++; if (c == 2) { d.resolve(); } }); return d.promise(); |
我可以调用辅助函数吗?
使用.when
就像是
1 | $.when(promise1, promise2).then(function() { /* do something */ }); |
这将允许您对一个或多个延迟进行分组,并仅在它们全部解决后执行某些操作。 或者如果其中任何一个失败,则调用
当主延迟解析时,将传递所有组件延迟的已解析值。
1 | $.when(promise1, promise2).then(resolution) |
你想要jQuery的
查看文档以获取完整示例。 这是要点:
1 2 3 | $.when( $.ajax("/myURL/"), someOtherDeferred ).done(function( a1, a2 ) { // ... Both deferrals are complete! }); |
请注意,
如果您希望即使承诺失败也要执行某些操作,请使用