Ome*_*ari 10 ajax jquery jquery-deferred
我有两个javascript函数,save()
并saveAll()
设置如下:
function save(data) {
return $.post('/save', data);
}
function saveAll(callback) {
var dataArray = [];
$.each(dataArray, function() {
save(this);
});
callback();
}
Run Code Online (Sandbox Code Playgroud)
我有兴趣修改saveAll()
它以利用jquery延迟对象,并在callback
所有save()
操作完成后引发该函数.但是,我不确定确切的语法...特别是与$ .when()内部的$ .each()有关.会是这样的吗?
function saveAll(callback) {
var dataArray = [];
$.when(
$.each(dataArray, function() {
return save(this);
})
).then(callback);
}
Run Code Online (Sandbox Code Playgroud)
Ome*_*ari 21
正如Eli指出的那样,$ .when()接受逗号分隔的参数列表而不是数组.使用Function.apply()
传入数组似乎可以做到这一点.
function saveAll(callback) {
var dataArray = [], deferreds = [];
$.each(dataArray, function() {
deferreds.push( save() );
});
$.when.apply(window, deferreds).then(callback);
}
Run Code Online (Sandbox Code Playgroud)