我在循环中遇到setTimeout中的函数调用问题。
传递给函数的参数是循环中为每次迭代计算的最后一个值,请参阅下面的示例。
Javascript:setTimeout中的函数和参考
for(var i=0; i<datesYM.length; ++i) {
console.log(datesYM[i]);
var dateYM = datesYM[i];
setTimeout(function() {
myDB.markMonthsValuesAsUpdated2(myDoctorId, dateYM)
}, Math.floor(Math.random()*5001));
}
myDB.markMonthsValuesAsUpdated2 = function(myDoctorId, dateYM) {
console.log(dateYM);
[...]
打印:
2012-01
2012-02 2012-03
2012-04
2012-05 2012-06
2012-072012-07
2012-07
2012-07
2012-07 2012-07
2012-07 2012-07