1. 程式人生 > >js的for迴圈中非同步請求

js的for迴圈中非同步請求

在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定義後,對函式外部無影響。不然資料量多的話一直卡著