我要在nodejs中的同一个文件上做循环写作。 特别是这是伪代码:
value = 77;
for(var i=0; i<list.length; i++){
if(list[i] > 10){
proxy.setNewState(value, function(response){
console.log(response);
});
}
}
函数“setNewState”执行一些嵌套操作: (1)写一个文件“out.txt”的东西...... (2)运行一个模块,使用该文件生成一个URL,对服务器发出HTTP请求(注意:我需要编写一个文件,因为这个模块运行一些shell命令,使用这个文件)。 (3)使用回调返回响应。
我的问题(我认为)是“for”循环不好,因为文件是重写的,因此HTTP没有正确执行。
有什么帮助吗?我该怎么办?
答案 0 :(得分:0)
在循环之前打开文件并在循环内逐步写入。然后在循环后关闭它。
假设您正在使用the standard Node File System API:
fs.open()
异步打开文件或fs.openSync()
同步打开文件fs.write()
异步写入文件或fs.writeSync()
同步写入文件。如果使用缓冲区,请确保使用带缓冲区的方法签名。如果您正在使用数据,请务必使用获取数据的方法签名。另请注意文档中有关多次使用异步版本而不等待回调的警告!如果您需要这样做,请使用fs.createWriteStream()
等而不是这些功能。这将返回a Writable Stream,因此请另外阅读文档。fs.close()
或fs.closeSync()
关闭文件。 无法使用的是fs.writeFile()
或fs.writeFileSync()
,因为这些将在每次写入时替换该文件。