在for循环中调用异步函数

var path;

for (var i = 0, c = paths.length; i < c; i++)

{

path = paths[i];

fs.lstat(path, function (error, stat)

{

console.log(path); // this outputs always the last element

});

}

我如何访问path传递给fs.lstat函数的变量?

回答:

这是使用.forEach()而不是for循环迭代值的完美理由。

paths.forEach(function( path ) {

fs.lstat( path, function(err, stat) {

console.log( path, stat );

});

});

另外,您可以使用@Aadit建议的闭包:

for (var i = 0, c = paths.length; i < c; i++)

{

// creating an Immiedately Invoked Function Expression

(function( path ) {

fs.lstat(path, function (error, stat) {

console.log(path, stat);

});

})( paths[i] );

// passing paths[i] in as "path" in the closure

}

以上是 在for循环中调用异步函数 的全部内容, 来源链接: utcz.com/qa/399426.html

回到顶部