MrI*_*zik 7 javascript asynchronous readfile node.js
我正在迭代一个包含文件名的数组.对于他们每个人,我都会调用readFile().当调用相应的回调时,我希望检索readFile()作为参数传递的文件名.可以吗?
附上一个剪切代码,以更好地解释我的意图.
var fs = require("fs");
var files = ["first.txt", "second.txt"];
for (var index in files) {
fs.readFile(files[index], function(err, data) {
//var filename = files[index];
// If I am not mistaken, readFile() is asynchronous. Hence, when its
// callback is invoked, files[index] may correspond to a different file.
// (the index had a progression).
});
}
Run Code Online (Sandbox Code Playgroud)
Fel*_*her 10
你可以使用一个闭包来做到这一点:
for (var index in files) {
(function (filename) {
fs.readFile(filename, function(err, data) {
// You can use 'filename' here as well.
console.log(filename);
});
}(files[index]));
}
Run Code Online (Sandbox Code Playgroud)
现在,每个文件名都保存为函数的参数,并且不会受到循环继续其迭代的影响.
您也可以使用forEach而不是for循环:
files.forEach(function (file){
fs.readFile(file, function (err, data){
console.log("Reading %s...", file)
})
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5892 次 |
| 最近记录: |