【发布时间】:2013-11-29 14:25:40
【问题描述】:
我有一个函数来删除一个列表文件,filePaths,方法是对列表中的每个文件调用一个 deleteFile(filePath)(我使用的一些 APIS 不支持批量删除)。函数 deleteFile 返回一个 jQuery 承诺,并在删除文件时解析/拒绝。
function deleteFiles(filePaths)
var deferreds = $.map(fileKeys, function (val, index) {
return deleteFile(filePath);
});
$.when.apply($, deferreds).then(function (schemas) {
console.log("DONE", this, schemas);
deferred.resolve();
}, function (error) {
console.log("My ajax failed");
deferred.reject(error);
});
我正在对列表中的某些文件进行 .reject 调用(我知道它们存在),所以我想我可能需要将 filePaths 数组转换为调用链,例如队列(b /c 这不是 $.when 所做的,是吗?它似乎一次启动它们)。我知道如何做到这一点(比如 .deleteFile(path1).deletePath(path2). etc 当它们在这样的数组中时。
提前感谢任何帮助。
【问题讨论】:
-
即使其中一个 ajax 请求失败了,那么 $.when 也会调用拒绝处理程序...如果失败了你想做什么
标签: jquery asynchronous promise jquery-deferred