我有一组函数,它们异步地生成一些逻辑(例如ajax调用)。如何看待函数,它将从数组中顺序调用函数?
var saveHandlers = [];
saveHandlers.push(function () {
var deferred = $.Deferred();
setTimeout(function() {
deferred.resolve();
}, 2000);
return deferred.promise();
});
saveHandlers.push(function () {
var deferred = $.Deferred();
setTimeout(function() {
deferred.resolve();
}, 2000);
return deferred.promise();
});
$(function () {
var $form = $('#form');
$form
.unbind('submit')
.submit(function (e) {
if (saveHandlers.length > 0) {
$.when.apply(null, saveHandlers);
}
e.preventDefault();
});
});
答案 0 :(得分:0)
编写一个调用异步函数的函数,并将数组索引作为参数。
在async函数的回调中,递增索引并且(如果你还没到达数组末尾)用新索引递归调用函数。
var foo = [fun_a, fun_b, fun_c];
function bar(index) {
index = index || 0;
function callback() {
if (foo[++index]) {
bar(index);
}
};
foo[index]().then(callback);
}