jquery queue ajax,插件 jQuery ajaxQueue 中文API文档

插件 jQuery.ajaxQueue 中文API文档

源码 & 下载

适用场景

jQuery中ajax请求的简单队列。

插件特点

此pluging创建一个新方法,确保一次只运行一个AJAX请求。

它在使用jQuery的内置队列开始新的请求之前等待先前的请求完成。

jQuery.ajaxQueue(options)

采用与 jQuery.ajax 相同的选项,并返回一个promise。返回值不是a jqXHR ,

但它会表现得像一个。该 abort() 如果还没有开始对返回的对象方法从队列中删除请求,或一旦请求开始一起传递给jqXHR的中止方法。

基本用法

(function( $ ) {

/*

======== A Handy Little QUnit Reference ========

http://docs.jquery.com/QUnit

Test methods:

expect(numAssertions)

stop(increment)

start(decrement)

Test assertions:

ok(value, [message])

equal(actual, expected, [message])

notEqual(actual, expected, [message])

deepEqual(actual, expected, [message])

notDeepEqual(actual, expected, [message])

strictEqual(actual, expected, [message])

notStrictEqual(actual, expected, [message])

raises(block, [expected], [message])

*/

var requests;

module( "ajaxQueue", {

setup: function() {

requests = [];

this.xhr = sinon.useFakeXMLHttpRequest();

this.xhr.onCreate = function (xhr) {

xhr.customRespond = function() {

this.respond(200, { "Content-Type": "application/json" },

'{ "id": 10, "name": "ajaxQueue" }');

};

requests.push(xhr);

};

},

teardown: function() {

this.xhr.restore();

}

});

asyncTest( "Smoke detection: Normal ajax request", 1, function () {

$.ajax({

url: "mock.json",

dataType: "json",

success: function(data) {

start();

equal(data.name, "ajaxQueue");

}

});

requests[0].customRespond();

});

asyncTest( "Single ajaxQueue request", 1, function () {

$.ajaxQueue({

url: "mock.json",

dataType: "json",

success: function(data) {

start();

equal(data.name, "ajaxQueue");

}

});

requests[0].customRespond();

});

asyncTest( "Concurrent ajaxQueue requests", 9, function () {

$.ajaxQueue({

url: "first_mock.json",

dataType: "json",

success: function(data) {

console.log("\n1st mock received");

equal(data.name, "ajaxQueue");

}

});

$.ajaxQueue({

url: "second_mock.json",

dataType: "json",

success: function(data) {

console.log("2nd mock received");

equal(data.name, "ajaxQueue");

}

});

$.ajaxQueue({

url: "third_mock.json",

dataType: "json",

success: function(data) {

console.log("3rd mock received");

start();

equal(data.name, "ajaxQueue");

}

});

equal(requests.length, 1, "Only one request is called at a time");

equal(requests[0].url, "first_mock.json", "... and it's the 1st");

setTimeout(function() {

requests[0].customRespond();

equal(requests.length, 2, "Next request is called after 1st is received");

equal(requests[1].url, "second_mock.json", "... and it's the 2nd");

setTimeout(function() {

requests[1].customRespond();

equal(requests.length, 3, "Next request is called after 2nd is received");

equal(requests[2].url, "third_mock.json", "... and it's the 3rd");

requests[2].customRespond();

}, 500);

}, 500);

});

}(jQuery));

源码解析

参考引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值