Javascript jquery';$。当';:如何触发';完成';即使出现错误也会回调
Jquery的Javascript jquery';$。当';:如何触发';完成';即使出现错误也会回调,javascript,jquery,promise,.when,Javascript,Jquery,Promise,.when,Jquery的$。when函数在所有承诺都已解决时执行“done”回调,但如果其中任何承诺导致错误,则不会执行。一旦所有承诺都有了结果,success或error,我如何执行“done”回调 Jquery的$.when函数在解析所有承诺时执行“done”回调,但在任何承诺导致错误时则不执行 请允许我用更准确的术语重新表述这一点 jQuery的$。当获取一个承诺列表1并且返回一个新承诺时。当所有这些承诺都履行时,新的承诺履行,或者当任何一个承诺被拒绝时,拒绝 您正在寻找的函数名为“结算”,在jQu
$。when
函数在所有承诺都已解决时执行“done”回调,但如果其中任何承诺导致错误,则不会执行。一旦所有承诺都有了结果,success
或error
,我如何执行“done”回调
Jquery的$.when函数在解析所有承诺时执行“done”回调,但在任何承诺导致错误时则不执行
请允许我用更准确的术语重新表述这一点
jQuery的$。当
获取一个承诺列表1并且返回一个新承诺时。当所有这些承诺都履行时,新的承诺履行,或者当任何一个承诺被拒绝时,拒绝
您正在寻找的函数名为“结算”,在jQuery的promise实现中不可用-幸运的是,我们可以轻松添加它
该战略是:
- 明确地创建一个新的承诺
- 使计数器从参数的数目开始
- 对于每个参数:
- 如果它不是一个承诺,立即分配它并减少计数器
- 如果它是一个承诺,等待它解决,然后减少计数器
- 当计数器达到0时,解析承诺
$.settle($.get("firstUrl"),$.get("secondUrl")).then(function(firstResult, secondResult){
// access results here, values are in firstResult.value
// and you can tell if it rejected or fulfilled in firstResult.status
);
我不太喜欢这里的语义,但我已经尝试让它们尽可能接近jQuery对$的语义
(1.或在jQuery中也是承诺的延期)参见
$.settle($.get("firstUrl"),$.get("secondUrl")).then(function(firstResult, secondResult){
// access results here, values are in firstResult.value
// and you can tell if it rejected or fulfilled in firstResult.status
);