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 (?????)
本文探讨了一个使用Node.js async模块中的whilst方法实现的循环问题。由于未正确调用回调函数导致循环逻辑出现错误,通过调整代码使其正常工作,并分析了其背后的原理。
2148

被折叠的 条评论
为什么被折叠?



