我正在尝试运行三个功能,前两个正在做一些需要数据供第三个使用的异步内容。我希望第三个函数仅在 1 和 2 都完成时触发。这是一般结构,但最终功能是在 1 和 2 完成之前触发。
function run() {
var data1 = {};
var data2 = {};
$.when(first(), second()).done(constructData());
function first() {
var d = new $.Deferred();
//do a bunch of stuff async
data1 = {};
d.resolve();
}
function second() {
var d = new $.Deferred();
//do a bunch of stuff async
data2 = {};
d.resolve();
}
function constructData() {
//do stuff with data1 and data2
}
}
答案是不要立即调用构造数据
$.when(first(), second()).done(constructData);