gpt4 book ai didi

jquery - 一旦所有延迟对象都被解析,就引发 jquery deferred.then()

转载 作者:行者123 更新时间:2023-12-03 22:20:09 25 4
gpt4 key购买 nike

我有两个 JavaScript 函数,save()saveAll(),设置如下:

function save(data) {
return $.post('/save', data);
}

function saveAll(callback) {
var dataArray = [];
$.each(dataArray, function() {
save(this);
});
callback();
}

我有兴趣修改saveAll(),以便它利用jquery延迟对象,并在所有save()后引发callback函数> 操作已完成。但是,我不确定确切的语法...特别是与 $.when() 内部的 $.each() 相关的语法。会是这样吗?

function saveAll(callback) {
var dataArray = [];
$.when(
$.each(dataArray, function() {
return save(this);
})
).then(callback);
}

最佳答案

正如 Eli 指出的,$.when() 接受逗号分隔的参数列表,而不是数组。使用 Function.apply() 传入数组似乎可以解决问题。

function saveAll(callback) {
var dataArray = [], deferreds = [];
$.each(dataArray, function() {
deferreds.push( save() );
});

$.when.apply(window, deferreds).then(callback);
}

关于jquery - 一旦所有延迟对象都被解析,就引发 jquery deferred.then(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5573165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com