var async = require('async');
var count = 0;
var list = [{name:'Jack',age:20},{name:'Lucy',age:18}];
async.whilst(
function(){
console.log(count);
return count < list.length;
},
function(callback){
list[count].age += 1;
count++;
},
function(err){
}
);
console.log(list);
- 这段代码的输出结果竟然是神奇的:
[ { name: ‘Jack’, age: 21 }, { name: ‘Lucy’, age: 18 } ]
- 问题出在哪呢?
function(callback){
list[count].age += 1;
count++;
}
循环体中没有调用callback回调
- 猜想:
- 循环体中主动调用callback时表明该循环体执行结束
- whilst也正是靠着这种方式继续调用下去的
- 验证:
- 在循环体中主动调用callback后,结果正确
function(callback){
list[count].age += 1;
count++;
callback();
},
[ { name: ‘Jack’, age: 21 }, { name: ‘Lucy’, age: 19 } ]
- 源码分析:
- //TODO (?????)