0
我試圖確定在以下循環中的最後一個回調函數調用。目前,循環執行速度比內部函數快,並且在最後一次回調之前標誌被設置爲真。我需要的是僅在最後一次回調期間將標誌設置爲真。我如何修改下面的代碼:在for循環中設置一個標誌,用於在同一個循環中調用的函數的回調函數中
// global variable flag
var flag = false;
var files = [..]; // some array of files
var count = files.length;
for (i = 0; i < count; i++) {
var file = files[i];
flag = count - i == 1; // Sets true when last item is processed in the files array
request = some-api.get(file.id);
request.execute(callback.bind(this));
}
function callback(data){
if(flag){
// Do something with data
data.use();
}
}
'.execute()'異步嗎?如果是這樣,你應該將標誌傳遞給回調函數,而不是嘗試在全局變量中使用它。 '.bind()'將允許你傳遞'.execute()'通常發送給它的額外參數。 – jfriend00
'.execute()'是異步的。這是造成這個問題的原因。這不是我的代碼,而是我使用的API。因此,我認爲我不能將標誌傳遞給回調方法。任何其他想法? – Tom
'.bind()'可以爲你解決這個問題。我已經說明了如何在下面的答案。 – jfriend00