問題:有一個數組,數組中每一個元素非同步請求後端獲得對應的內容進行操作。
var arr=[];for(let i=0;i<arr.length;i++){ $.post("请求地址",“传递数据”,function(){ //异步请求后的操作 }) }
for循環中使用非同步請求時出現的問題就是:非同步請求是不阻塞主程序,當非同步請求出資料的時候,主程式可能已經結束,這就給我們程式帶來問題。
如何在for迴圈內使用非同步請求,同時確保資料的執行順序?
解決方法:$.Deferred()
var lives=[……]; var defer = $.Deferred(); defer.resolve($("#aa").append("没有意义")); //该句为必须的,即使什么也不需要操作 $.each(lives,function(i,e){ defer = defer.then(function () { return $.ajax({ //进行异步请求操作 url:"请求地址", type:'post', data:{ //异步请求的数据 "username":lives[i].username, "userId":lives[i].id, }, dataType: "jsonp", success:function(data){ //异步请求后的操作 } }) }); });
#另外$.deferred()相關內容還有很多
以上是$.Deferred(),for迴圈內非同步請求問題的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!