如何实现和jquery承诺?
我想要一个承诺,当允诺人1和允诺人2的两个承诺都得到解决时,这个承诺本身就会得到解决。我该怎么做 以下是我当前的可怕代码:如何实现和jquery承诺?,jquery,promise,Jquery,Promise,我想要一个承诺,当允诺人1和允诺人2的两个承诺都得到解决时,这个承诺本身就会得到解决。我该怎么做 以下是我当前的可怕代码: var c = 0; var d = $.Deferred(); promise1.then(() => { c++; if (c == 2) { d.resolve();
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(promise1, promise2).then(function() { /* do something */ });
这将允许您将一个或多个延迟分组,并仅在它们都已解决时才执行某些操作。或者,如果其中任何一个出现故障,则调用failCallback
当主延迟解析时,它将被传递所有组件延迟的解析值。您想要jQuery的。
有关完整示例,请查看。要点如下:
$.when( $.ajax("/myURL/"), someOtherDeferred ).done(function( a1, a2 ) {
// ... Both deferrals are complete!
});
请注意,$.ajax
创建了一个“”(类似于promise
),因此两者可以互换
如果您想在承诺失败的情况下执行某些操作,请使用而不是
.done()
$。当
为您执行此操作时,包括正确的错误处理。@Bergi虽然在浏览器中,一切都是ajax承诺,但我肯定没有想过以这种方式搜索答案。我知道,但是,在这个主题上还有一些其他的非ajax问题(例如)与这个规范问题重复。我猜关键词是“等待”和“全部”或“多个”。有这么多的代表性,你肯定是那种应该以dup而不是最快的枪来接近的人。请注意,问题是“承诺”而不是“AJAX”。OP可能不知道它们是可互换的。大声说吧explanation@CaseyFalk这是属于一篇评论的东西,@Jhawins!:)
$.when(promise1, promise2).then(resolution)