Javascript 所有的承诺永远不会运行,然后回调
关于Javascript 所有的承诺永远不会运行,然后回调,javascript,jquery,promise,Javascript,Jquery,Promise,关于Q.all的工作原理,我有点不知所措。 我有以下代码段(): 第一次调用callUrl将成功,第二次调用将失败(将返回错误,因为url不存在)。 我希望Q.all执行然后回调,就像ajax一样。总是这样,但事实并非如此 我做错了什么吗?您需要链接一个catch方法并为此回调,因为Q.all在遇到拒绝的承诺时将返回拒绝的承诺 通过catch(或者您可以传递到then)的可选第二次回调),您会因拒绝的承诺而被回调。404是一个从服务器传播到JS应用程序的错误 使用.catch Q.all([ca
Q.all
的工作原理,我有点不知所措。
我有以下代码段():
第一次调用callUrl
将成功,第二次调用将失败(将返回错误,因为url不存在)。
我希望Q.all
执行然后
回调,就像ajax一样。总是这样,但事实并非如此
我做错了什么吗?您需要链接一个catch
方法并为此回调,因为Q.all
在遇到拒绝的承诺时将返回拒绝的承诺
通过catch
(或者您可以传递到then
)的可选第二次回调),您会因拒绝的承诺而被回调。404是一个从服务器传播到JS应用程序的错误
使用.catch
Q.all([callUrl("https://httpbin.org/get"), callUrl("https://httpbin.org/undefined")]).then(function(){
console.log("Done");
}).catch(function(e){
console.log("err",e);
});
谢谢你的快速回复。那么,只有当所有的承诺都成功的时候,才会接到电话?事实上,就像你说的那样。如果有任何拒绝,第一个拒绝原因将传递给catch
处理程序。潜在的其他未决承诺不再由Q监控。当这种情况发生时,所有的。太棒了!谢谢你的解释(你有我的+1:),我会接受Kurt G的回答,因为他也是第一个回答的,我希望你不会介意。没问题。在我的页面上,我看到我的答案比他的答案晚了一分钟,但没问题。谢谢你的快速回复。那么只有当所有的承诺都成功时才会被召唤?@GETah,是的,所有的承诺都需要成功才能解决。这就是为什么你的回电没有被呼叫的原因。
Q.all([callUrl("https://httpbin.org/get"), callUrl("https://httpbin.org/undefined")]).then(function(){
console.log("Done");
}).catch(function(e){
console.log("err",e);
});