gpt4 book ai didi

javascript - jQuery promise 模拟数组上函数的同步调用

转载 作者:行者123 更新时间:2023-11-27 22:56:37 25 4
gpt4 key购买 nike

假设我需要同步上传文件。相继。我找到了这个stackoverflow话题。并修改了代码:

var arr = ["file1", "file2", "file3"];

var d = $.Deferred().resolve();
while (arr.length > 0) {
d = d.then(uploadFile(arr.shift()));
}

function uploadFile(file){
var d = $.Deferred();
setTimeout(function(){ console.log("Uploading file:"+file); d.resolve(""); },1000);
return d.promise();
}

但我仍然异步调用它们,但超时为 1000。

这是 fiddle :fiddle

解决方案:非常感谢菲利克斯。这里正在工作fiddle

最佳答案

您必须将一个函数传递给.then。目前,您正在循环内立即调用 uploadFile 并将 promise 传递给 .then 而不是函数。

您无需使用循环即可执行以下操作:

d.then(function next() {
var promise = uploadFile(arr.shift());
return arr.length === 0 ? promise : promise.then(next);
});

这使用间接递归而不是循环。

关于javascript - jQuery promise 模拟数组上函数的同步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37547884/

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