Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery';$。当';:如何触发';完成';即使出现错误也会回调_Javascript_Jquery_Promise_.when - Fatal编程技术网

Javascript jquery';$。当';:如何触发';完成';即使出现错误也会回调

Javascript jquery';$。当';:如何触发';完成';即使出现错误也会回调,javascript,jquery,promise,.when,Javascript,Jquery,Promise,.when,Jquery的$。when函数在所有承诺都已解决时执行“done”回调,但如果其中任何承诺导致错误,则不会执行。一旦所有承诺都有了结果,success或error,我如何执行“done”回调 Jquery的$.when函数在解析所有承诺时执行“done”回调,但在任何承诺导致错误时则不执行 请允许我用更准确的术语重新表述这一点 jQuery的$。当获取一个承诺列表1并且返回一个新承诺时。当所有这些承诺都履行时,新的承诺履行,或者当任何一个承诺被拒绝时,拒绝 您正在寻找的函数名为“结算”,在jQu

Jquery的
$。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
);