我需要进行一系列(1-20)ajax调用,当它们全部完成时,我需要调用另一个函数.所谓完成,是指$.ajax({complete:…})被调用时.
iv研究了何时使用$.when,但是在jsfiddle上摆弄它之后,我遇到了2个问题. 1. $.then和$.done在我所有的完整回调之前被调用.
2.如果单个ajax调用失败,则根本不会调用它.
基本上,似乎$.done是成功调用的,而不是完整的.
我认为必须有一些可以处理此类问题的优秀ajax管理器/队列.或者甚至是一些通用的异步任务都在处理.. ;;)
解决方法:
如果您不喜欢$.ajax时的默认jQuery选择
调用解析其延迟的对象,您可以编写自己的包装器;
var my_ajax = function (options) {
var deferred = $.Deferred();
var user_complete = options.complete;
options.complete = function (jqXHR, textStatus) {
if (user_complete) user_complete(jqXHR, textStatus);
deferred.resolve();
};
$.ajax(options);
return deferred.promise();
};
由于my_ajax从未调用过deferred.reject(),因此将.fail链接到$.when
如果$.when的所有参数都是my_ajax调用,则将毫无意义.
希望对您有所帮助!请让我知道是否可以澄清任何事情.
标签:ajax,javascript,jquery
来源: https://codeday.me/bug/20191201/2079037.html