在Node.js中将多个文件写入循环

嗨,我在nodejs脚本中使用了每个循环,以将多个文件写入本地位置。对于courseTitleArray,我在使用“ Biology

101,ruby”,并且我可以 写入一个文件,但 写入两个文件。请帮助我出来。

到目前为止,这是我的代码

  for (var value in CourseTitleArray) {

console.log( "Course Title " + CourseTitleArray[value]);

var newImageLocation = path.join(__dirname, 'app/img/courseImages', CourseTitleArray[value] + ".png");

fs.readFile(image.path, function(err, data) {

fs.writeFile(newImageLocation, data, function(err) {

console.log(CourseTitleArray[value] + " was created successfully");

});

});

console.log("Loop executed " + value);

}

在控制台中,我得到以下日志。

Course Title Biology 101

Loop executed 0

Course Title ruby

Loop executed 1

ruby was created successfully

ruby was created successfully

看起来循环工作正常,并且在日志中我可以看到两个标题。但是在撰写《生物学101,红宝石》时,已经执行了两次。

有人可以帮我吗?谢谢

回答:

您的问题是循环完成时会调用您的回调,因此value已更改。

一种解决方案是使用闭包来存储以下值value

for (var value in CourseTitleArray) {

(function(value){

console.log( "Course Title " + CourseTitleArray[value]);

var newImageLocation = path.join(__dirname, 'app/img/courseImages', CourseTitleArray[value] + ".png");

fs.readFile(image.path, function(err, data) {

fs.writeFile(newImageLocation, data, function(err) {

console.log(CourseTitleArray[value] + " was created successfully");

});

});

console.log("Loop executed " + value);

})(value);

}

请注意,尚不清楚“循环执行”日志的含义:登录时,尚未进行写入。

以上是 在Node.js中将多个文件写入循环 的全部内容, 来源链接: utcz.com/qa/420873.html

回到顶部