js的for迴圈中非同步請求
阿新 • • 發佈:2019-01-03
在for迴圈中如果非同步請求,則請求回來的資料都是最後一條,則是需要使用js的閉包知識來解決問題。話不多說直接上程式碼
for(let i=0; i<10; i++) { (function () { var str2 = rowDataList[i].poweruserunitids; var rowData = rowDataList[i]; control.getMonthResultInfoVO(str1, str2, function(resp){ if (resp.isError()) { if (console && console.log){ console .log("出錯啦"); } } }); })(i); }
要注意兩點,一是閉包問題,二是使用let關鍵字,let是塊級作用域,函式內部使用let定義後,對函式外部無影響。不然資料量多的話一直卡著