【发布时间】:2018-02-09 21:13:15
【问题描述】:
检测我的所有异步调用何时完成然后触发另一个函数的最佳方法是什么?我有三个由用户选择主题触发的查询。这些查询运行,然后将它们的返回值组合起来以在新函数中使用。问题是我需要知道它们何时完成然后运行新功能。
function queryHandler1() {
// do something
return result1;
}
function queryHandler2() {
// do something
return result2;
}
function queryHandler3() {
// do something
return result3;
}
function alldone(result1, result2, result3) {
// do something
return result4;
}
我尝试过使用 jquery.when(),但它只运行第一次,当用户选择一个新选项时它不会触发 alldone?
// global
var d1 = $.Deferred();
var d2 = $.Deferred();
var d3 = $.Deferred();
function queryHandler1() {
// do something
d1.resolve();
return result1;
}
function queryHandler2() {
// do something
d2.resolve();
return result2;
}
function queryHandler3() {
// do something
d3.resolve();
return result3;
}
function alldone(result1, result2, result3) {
// do something
return result4;
}
// the top level $.when
$.when(d1, d2, d3).done(function() {
alldone();
});
如何重置延迟或解决,以便再次触发所有完成?
感谢您的帮助!
【问题讨论】:
-
@user9263373 看了那个问题,但它不适用于 JavaScript,所以没有帮助,谢谢。
标签: javascript jquery asynchronous jquery-deferred