Я хочу ждать весь обратный вызов функции завершения, а затем возвращает конечный результат, например:Javascript возвращаемое значение из нескольких обратного вызова
var jsonArray = new Array();
for(var i = 0; i < 10; i++)
{
jQueryFunction(i, function(json){
jsonArray[i] = json;
});
}
return jsonArray;
jQueryFunction является функцией, которая содержит асинхронный Аякс и обратный вызов, возвращает значение, которое называется json. Я хочу дождаться окончания цикла цикла, а затем поместить все возвращаемые значения в jsonArray, верну его окончательно.
Моя цель состоит в том, чтобы ждать завершения всех обратных вызовов jQueryFunction и сохранить их возвращение в jsonArray, а затем вернуть jsonArray в конце. Моя предыдущая цель не работает, потому что она возвращает jsonArray сразу и не ждать, пока цикл
Я попытался, как это:
function jQueryFunction(ptd_url, callback)
{
$.ajax
({
type: "GET",
async: true,
url: ptd_url,
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "tpsHandler",
success: function(json)
{
return callback(json);
}
});
}
function finalResultFunction()
{
var jsonArray = new Array();
for(var i = 0; i < 10; i++)
{
jQueryFunction(1, function(json){
jsonArray[i] = json;
alert(jsonArray[i]);
});
}
$.when.apply($, jsonArray).done(function(){
alert(jsonArray[0]);
...
}
setInterval(finalResultFunction,1000);
Первое предупреждение показывает мне правильный объект, но второй по-прежнему показывает мне null. Зачем? Как это исправить?
так что же ваш _специфичный вопрос? – andi
Какая цель? – tymeJV
* Я хочу подождать окончания цикла for *. Вы используете синхронный AJAX? – Oriol