有時候咱們須要按順序調用一組ajax,這些ajax須要有前後順序,相似於同步的ajax,那麼咱們能夠經過如下的方式來實現:javascript
(這個Ajax用到jQuery.post) html
//定義一個AJAX隊列 $.newAjaxQueue = function() { var queue = [],posting=false, fn = function() { if(queue.length){ posting = true; var request = queue.shift(); var url = request.url; var params = request.params; var callback = request.callback; if (typeof(params) === 'function') { callback = params; params = {}; } $.post(url, params, function(response, status, xhr) { try{ if (typeof(callback) === 'function') { callback(response); } }finally{ fn(); posting = false; } }, 'text'); } },instance = ({ post: function(url,params,callback){ queue.push({ url:url,params:params,callback:callback }); if(posting===false){ fn(); } return instance; } }); return instance; };
使用方法:java
首先建立一個Ajax隊列,而後爲這個Ajax隊列,添加須要執行的ajax操做(post操做),這些Ajax會按順序執行,一個執行完畢以後(得到返回值),再繼續執行下一個。ajax
$.newAjaxQueue().post( [URL] , [參數] ,[回調函數] ).post( [URL] , [參數] ,[回調函數] ).post( [URL] , [參數] ,[回調函數] );app
這個實現沒有考慮到超時等狀況,若是須要能夠本身添加。dom
演示例子:函數
post