【发布时间】:2011-05-14 04:45:48
【问题描述】:
你好, 我正在开发一个 jQuery each()-loop,其中包含一个 ajax 请求和一个 setTimeout。这给我的程序流程带来了一些问题。
xml_queries: function (data) {
var values = [];
// ...
$.each(data, function(index, value) {
// ...
// Start xml query
var i = 0;
get_data(value.value);
function get_data(value) {
$.ajax({
type: 'POST',
url: '/admin/scanner/get_music_data/' + value,
dataTaype: 'json',
success: function(response) {
if ( response === 'FALSE' ) {
// Start recursion - up to 3 Retries
if ( ++i <= 3 ) {
setTimeout(function() {
get_data();
}, 100);
} else {
// ...
}
} else {
values.push(response);
}
}
});
}
});
// return values;
console.log(values);
}
我的问题是最后一行中的 console.log() 被立即触发(而循环仍在处理数据)。等待循环完成是否有任何简单的可能性? \:
最好的问候!
【问题讨论】:
-
这是常见的 Ajax-is-asynchronous 问题。关于 SO 有 吨 的问题,以一种或另一种方式解决。
标签: jquery ajax settimeout each program-flow