循环内部的函数-如何正确执行
Functions inside for loops - how to do it right?
我很难理解javascript的功能,我将用这段代码来解释它(假设patients
大小为3):
for(j=0; j<patients.length; j++){
console.log("before function - "+j);
DButils.getDaysLeft(patients[j] , function(daysLeft){
console.log("inside function - "+j);
});
console.log("end - "+j);
}
这是我得到的输出:
before function - 0
end - 0
before function - 1
end - 1
before function - 2
end - 2
inside function - 3
inside function - 3
inside function - 3
因为这个问题,如果我在函数内做patients[j]
,它总是给我undefined
,显然是因为患者只有3的大小。
我知道函数是一个线程,因此在我们进入函数的回调之前循环就结束了,但我该如何解决它呢?我能做些什么让它像c#
或java
那样作为一个正常的"for循环"来工作?
JavaScript具有
function
级作用域,而不是block
级作用域。
使用closure
,它会记住创建它的变量的值。
试试这个:
for (j = 0; j < patients.length; j++) {
console.log("before function - " + j);
DButils.getDaysLeft(patients[j], (function(j) {
return function(daysLeft) {
console.log("inside function - " + j);
}
})(j));
console.log("end - " + j);
}
相关文章:
- 函数在控制台中正确执行,但在代码中不正确
- jQuery Transit动画未在for循环中正确执行
- Web SQL事务在javascript函数中未正确执行
- 循环内部的函数-如何正确执行
- iPhone上的某些移动浏览器无法正确执行Javascript
- Jquery 滚动无法正确执行
- 如何正确执行Jquery动画浮动
- jQuery Div 无法正确执行
- 无法使用量角器正确执行页面对象模式
- jQuery 无法正确执行
- 如何调用Javascript函数并使其正确执行两次
- ng repeat无法正确执行angularjs
- JS赢得'无法通过AJAX调用正确执行
- Javascript函数未正确执行
- 如何确保复杂画布操作的正确执行顺序
- 函数不'除非调用两次,否则无法正确执行
- 如何正确执行ng repeat中的函数
- jquery在internetexplorer8中未正确执行
- Jquery函数未正确执行
- 如何正确执行函数引用(1)