例如,我们关注代码:
var data = [obj, obj, obj];
function handler(k, v) {
...
check(v, function() {});
}
function check(params, callback) {
...
request(options, callback);
}
function request(opts, callback) {
$.ajax({
...
opts
...
callback
});
}
$.each(data, handler);
我们如何等待完成$.each
并调用某些功能?例如,看起来像:
$.when($.each(data, handler)).then(alert(1));
我找不到解决方案。
P.S。我们无法知道数据的长度。
P.S。这不是重复的,因为代码使用promises或非常漂亮的东西道歉
答案 0 :(得分:0)
我建议查看q
库并开始使用promises来解决这个问题。您还可以在上一个回调中添加每个回调,创建第一个Pyramid of Doom。
答案 1 :(得分:0)
您需要返回jqXHR对象并将它们堆叠在一个$.map
的数组中:
var data = [obj, obj, obj];
function handler(v, i) {
...
return check(v, function() {});
}
function check(params, callback) {
...
return request(options, callback);
}
function request(opts, callback) {
return $.ajax({
...
opts
...
callback
});
}
$.when($.map(data, handler)).then(function(){
});