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