У меня есть три функции, которые я пытаюсь запустить, первые две делают некоторые асинхронные вещи, которым нужны данные для третьего пользователя. Я хочу, чтобы третья функция срабатывала только при выполнении 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);