当前位置: 首页 > 面试题库 >

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

夏侯楷
2023-03-14
问题内容

嗨,我在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时写入文件的方法,但是没有成功。我怎样才能做到这一点? 问题答案: 文件系统API中有很多详细信息。最常见的方法是:

  • 问题内容: 我一直在尝试找到一种使用Node.js时写入文件的方法,但是没有成功。我怎样才能做到这一点? 问题答案: 文件系统API中有很多详细信息。最常见的方法是:

  • 问题内容: 我在new.txt中有10行文字,例如Adam:8154 George:5234等等。现在我想要一个仅包含名称的文本文件。xyz.txt必须包含Adam George等。现在上面的代码只给我留下了第十个名字。 如何在一个文本文件中包含所有10个名称。 问题答案: 那是因为您在for循环中打开,写入和关闭文件10次 您应该在循环外打开和关闭文件。 您还应该注意 使用write行 而 不是

  • 问题内容: 我想创建一个简单的日志系统,该日志系统使用Node.js将前一行之前的一行打印到txt文件中,但是我不知道Node.js中的文件系统如何工作。有人可以解释吗? 问题答案: 将数据插入文本文件的中间不是一件容易的事。如果可能,应将其附加到文件末尾。 将数据追加到一些文本文件的最简单方法是使用来自模块的内置函数: 但是,如果您想多次将数据写入日志文件,那么最好改用function: 每次您

  • 问题内容: 我有一个示例数组如下 我想将此数组写入文件,例如我得到的文件如下 问题答案: 如果它是一个巨大的数组,并且在写入之前需要太多内存才能将其序列化为字符串,则可以使用流:

  • 问题内容: 我已经在stackoverflow / google上搜索了所有内容,但似乎无法弄清楚。 我正在抓取给定URL页面的社交媒体链接,并且该函数返回带有URL列表的对象。 当我尝试把这些数据写入到不同的文件,将其输出到文件,而不是预期:“ https://twitter.com/#!/101Cookbooks ”,’ http://www.facebook.com/ 101cookbook