Мне нужно выполнить функцию обратного вызова после завершения всех асинхронных функций.
Для этого я создал массив, содержащий асинхронные функции:
var funcs = [];
var requests = [];
В котором я подтолкнул некоторые функции AJAX.
Это мое решение, которое не работает:
for(i = 0; i < functions.length; i++){
var f = functions[i](); //calling each ajax functions
requests.push(f);
}
$.when.apply(null, requests).done(function(){
console.log("Hello");
});
Теперь функции выполняются асинхронно, но функции обратного вызова вызывается перед завершает выполнение функции.
Одним из примера функции AJAX Я оттолкнул:
functions.push(function() {
return $.ajax({
url: "some url",
success: function(){
console.log("Finished execution");
}
});
Вы должны ретранслировать обещание возвращенное по '$ .ajax()' вашему абоненту. Другими словами, 'return $ .ajax ({/ * ... * /});'. Также обратите внимание, что код в вашем вопросе содержит синтаксическую ошибку. –
1. У кода есть ошибки. 2. Попробуйте добавить 'console.log (« Function called »);' перед '$ .ajax' в функции. –
Редактирование устраняет тот факт, что вы не вызываете функции, но вам все равно нужно сделать, как предлагает @ FrédéricHamidi и вернуть результат '$ .ajax' в вашу примерную функцию. –