假设我需要对文件进行同步上传。相继。 我发现这个stackoverflow的话题。而且修改了代码:jQuery承诺模拟数组上的函数同步调用
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
SOLUTION: 大感谢名单菲利克斯。这里是工作fiddle
您必须将函数传递给'.then',而不是承诺。 –