gpt4 book ai didi

javascript - for 循环中的 fs.write()

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:26 25 4
gpt4 key购买 nike

我正在编写一个代码,其中我必须创建等于数组中元素数量的文件,并在文件中写入相应的数组元素。例如 array = [一,二,三],那么我想要文件一,内容一,依此类推。

var inputLength = inputs.length;

inputs.forEach(function(elem) {
i = inputs.indexOf(elem);
console.log(i);
fs.writeFile(Execute.path + Execute.folder + "/inputFile" + i, elem, function(err) {
if (err) {
console.log(err);
} else {
console.log("Input" + i + " file was saved!");
}

});


console.log(i);


});

第一个输出 console.log(i)很好,即 0,1,2,3 等等,但第二个 console.log(i) 的输出始终是最后一个元素的索引。

我的代码有什么问题以及如何实现我的目标

最佳答案

这与循环无关,而是 fs.writeFile()是一个异步调用,因此您需要为此使用 IIFE/Closure:

var inputLength = inputs.length;

inputs.forEach(function(elem) {
i = inputs.indexOf(elem);
(function (i) {
console.log(i);
fs.writeFile(Execute.path + Execute.folder + "/inputFile" + i, elem, function(err) {
if (err) {
console.log(err);
} else {
console.log("Input" + i + " file was saved!");
}
});
console.log(i);
})(i);
});

执行相同操作的另一种方法是使用同步对应项: fs.writeFileSync() .

关于javascript - for 循环中的 fs.write(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50929710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com