在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中写入文件
2021-01-31 关注 0 浏览104 1答案
-
JavaScript在Node.js中写入文件
2021-02-02 关注 0 浏览105 1答案
-
使用Node.js将对象写入文件
2021-01-31 关注 0 浏览120 1答案
-
Node.js读取和写入文件行
2021-01-31 关注 0 浏览147 1答案
-
使用 Node.js 在 JSON 文件中写入/添加数据
2022-05-26 关注 0 浏览15 1答案
-
使用Node.js在JSON文件中写入/添加数据
2021-01-31 关注 0 浏览149 1答案
-
在Node.js中写入CSV
2021-01-31 关注 0 浏览71 1答案
-
Node.js将一行写入.txt文件
2021-01-31 关注 0 浏览108 1答案
-
在Node.js中异步读取和缓存多个文件
2021-01-31 关注 0 浏览167 1答案
-
在多个文件node.js之间共享和修改变量
2021-01-31 关注 0 浏览128 1答案