错误的代码你能发现为什么密钥的使用会导致错误
var pipeline = {};
// (...) adding things in pipeline
for(var key in pipeline) {
fs.stat(pipeline[key].path, function(err, stats) {
if (err) {
// clear that one
delete pipeline[key];
return;
}
// (...)
pipeline[key].count++;
});
}
问题是 var key 只有一个实例。所有回调都将共享相同的密钥实例。在回调将触发时,该键很可能已经增加,而不是指向我们接收统计数据的元素。