栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

多个ajax调用的jQuery回调

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多个ajax调用的jQuery回调

这是我写的一个回调对象,您可以设置单个回调以在全部完成后触发,也可以让每个回调都有自己的回调并在全部完成后触发它们:

注意

从jQuery 1.5+开始,您可以按照另一个答案中所述使用deferred方法:

  $.when($.ajax(), [...]).then(function(results){},[...]);

此处延迟的示例

对于jQuery
<1.5,下面的方法将起作用,或者如果您需要在未知时间触发ajax调用,如此处所示,有两个按钮:单击两个按钮后触发

[用法]

对于 单一 的回调完成后: 工作实例

// initialize herevar requestCallback = new MyRequestsCompleted({    numRequest: 3,    singleCallback: function(){        alert( "I'm the callback");    }});//usage in request$.ajax({    url: '/echo/html/',    success: function(data) {        requestCallback.requestComplete(true);    }});$.ajax({    url: '/echo/html/',    success: function(data) {        requestCallback.requestComplete(true);    }});$.ajax({    url: '/echo/html/',    success: function(data) {        requestCallback.requestComplete(true);    }});

每个都完成时都有 自己的 回调: 工作示例

//initialize var requestCallback = new MyRequestsCompleted({    numRequest: 3});//usage in request$.ajax({    url: '/echo/html/',    success: function(data) {        requestCallback.addCallbackToQueue(true, function() { alert('Im the first callback');        });    }});$.ajax({    url: '/echo/html/',    success: function(data) {        requestCallback.addCallbackToQueue(true, function() { alert('Im the second callback');        });    }});$.ajax({    url: '/echo/html/',    success: function(data) {        requestCallback.addCallbackToQueue(true, function() { alert('Im the third callback');        });    }});

[代码]

var MyRequestsCompleted = (function() {    var numRequestToComplete, requestsCompleted, callBacks, singleCallBack;    return function(options) {        if (!options) options = {};        numRequestToComplete = options.numRequest || 0;        requestsCompleted = options.requestsCompleted || 0;        callBacks = [];        var fireCallbacks = function() { alert("we're all complete"); for (var i = 0; i < callBacks.length; i++) callBacks[i]();        };        if (options.singleCallback) callBacks.push(options.singleCallback);        this.addCallbackToQueue = function(isComplete, callback) { if (isComplete) requestsCompleted++; if (callback) callBacks.push(callback); if (requestsCompleted == numRequestToComplete) fireCallbacks();        };        this.requestComplete = function(isComplete) { if (isComplete) requestsCompleted++; if (requestsCompleted == numRequestToComplete) fireCallbacks();        };        this.setCallback = function(callback) { callBacks.push(callBack);        };    };})();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436866.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号