了解fs.writeFileSync(路径,数据[,选项])Node.js
我有一个函数,将数据写入文件,然后将该文件上传到云存储。文件在开始上传之前还没有写完,所以我在云存储中得到了一个部分文件。我发现了解fs.writeFileSync(路径,数据[,选项])Node.js,node.js,asynchronous,Node.js,Asynchronous,我有一个函数,将数据写入文件,然后将该文件上传到云存储。文件在开始上传之前还没有写完,所以我在云存储中得到了一个部分文件。我发现fs.writeFileSync(path,data[,options])可能会有所帮助,但我不确定它是如何工作的 据我所知,节点是异步运行的,在这部分代码之前,我有几个异步进程在运行。我理解同步与异步的含义,但我在理解它在本例中的作用时有点困难。如果我用fs.writeFileSync(路径,数据[,选项])替换下面的代码,下面是我的问题。 文档中的“同步向文件追加数
fs.writeFileSync(path,data[,options])
可能会有所帮助,但我不确定它是如何工作的
据我所知,节点是异步运行的,在这部分代码之前,我有几个异步进程在运行。我理解同步与异步的含义,但我在理解它在本例中的作用时有点困难。如果我用fs.writeFileSync(路径,数据[,选项])替换下面的代码,下面是我的问题。
- a。在
完成之前,下一行代码是否会暂停fs.writeFileSync(路径,数据)
- b。以前的异步进程是否被这行代码停止
writeFileSync
与writeFile
有何不同writeFileSync
中是否有我误解的回调功能outCsv = "x","y","z"
filename = "file.csv"
fs.writeFile(filename, outCsv, function (err) {
if (err) {
return console.log(err);
}
console.log('The file was saved!');
bucket.upload(filename, (err, file) => {
if (err) {
return console.log(err);
}
console.log('The file was uploaded!');
});
});
在fs.writeFileSync(路径,数据)完成之前,下一行代码是否会暂停
对。这是一个阻塞操作。请注意,您假设fs.writeFileSync
完成
以前的异步进程是否被这行代码停止
有点。由于JavaScript是单线程的,所以在文件写入时它们也不会运行,而是在事件循环的下一个滴答声时排队
如果其他异步进程不受影响,writeFileSync与writeFile有何不同
它会阻止后面的任何代码。对于一个更简单的例子,考虑如下:
setTimeout(() => console.log('3'), 5);
console.log('1'); // fs.writeFileSync
console.log('2');
vs
第一个将打印1 2 3,因为对console.log的调用会阻塞后面的内容。第二个将打印2 1 3,因为setTimeout是非阻塞的。打印3的代码不会受到任何影响:3总是最后一个
writeFileSync中是否有我误解的回调功能
不知道。你没有发布足够的代码让我们说
这一切都引出了一个问题:为什么选择fs.writeFile
而不是其他选择。答案是:
同步版本将被阻止
虽然需要花费多长时间,但您的Web服务器不处理请求
在fs.writeFileSync(路径,数据)完成之前,下一行代码是否会暂停
对。这是一个阻塞操作。请注意,您假设fs.writeFileSync
完成
以前的异步进程是否被这行代码停止
有点。由于JavaScript是单线程的,所以在文件写入时它们也不会运行,而是在事件循环的下一个滴答声时排队
如果其他异步进程不受影响,writeFileSync与writeFile有何不同
它会阻止后面的任何代码。对于一个更简单的例子,考虑如下:
setTimeout(() => console.log('3'), 5);
console.log('1'); // fs.writeFileSync
console.log('2');
vs
第一个将打印1 2 3,因为对console.log的调用会阻塞后面的内容。第二个将打印2 1 3,因为setTimeout是非阻塞的。打印3的代码不会受到任何影响:3总是最后一个
writeFileSync中是否有我误解的回调功能
不知道。你没有发布足够的代码让我们说
这一切都引出了一个问题:为什么选择fs.writeFile
而不是其他选择。答案是:
同步版本将被阻止
虽然这需要花多长时间,但您的Web服务器无法处理请求。谢谢,jonrsharpe的编辑谢谢,jonrsharpe的编辑谢谢,非常感谢这非常有帮助!非常感谢,这非常有帮助!