【发布时间】:2013-02-12 03:24:07
【问题描述】:
我正在寻找一种在两次 ajax 调用完成后进行回调的方法:
$.when(
call1(),
call2()
).always(function() {
// Here I want to be sure the two calls are done and to get their responses
);
问题是其中一个调用可能会失败。所以,在我的代码中,总是会在不等待另一个调用的情况下调用。
如何等待两个调用都完成(成功或失败)?
【问题讨论】:
-
你可能想看看 Promise api.jquery.com/promise
-
@BlueBird:怎么样?承诺需要我没有的 jquery 对象。可以举个例子吗?
-
@BlueBird:
$.when已经返回了一个承诺对象,即 OP 已经使用了承诺。 -
@FelixKling:$.when 对我不利,因为它不会等待两个调用完成,以防一个调用失败。
-
@Naor:我知道,我想向 BlueBird 解释他的评论是多余的。关于您的问题:我认为您必须实现自己的
$.when,只有在所有承诺都被拒绝/解决后才会拒绝和解决。以下是$.when的实现方式:github.com/jquery/jquery/blob/1.9.1/src/deferred.js#L91。
标签: javascript jquery jquery-deferred