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

标签 javascript node.js file-io fs

我正在编写一个代码,其中我必须创建等于数组中元素数量的文件,并在文件中写入相应的数组元素。 例如 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/

相关文章:

javascript - 使用命名空间时 Socket.io 客户端忽略端口 [错误?]

css - Node.js 本地服务器 css 文件不注入(inject)

javascript - 如何在 Flask 上提供页面时在浏览器上上传图像预览?

javascript - 如何删除 chrome.app.window.onMinimize 事件监听器?

javascript - 替换浏览器中显示的所有文本

node.js - nginx proxy_pass 不适用于本地主机

javascript - 我在 Node.js 中读取 tgz 文件的方式有问题吗?基准测试显示速度很慢 :(

python - 在 Python 中读取大文件

c - diff cmd,二进制文件 x 和 y 不同

javascript - 如何将 CSS 属性设置为 if 语句中的条件?