以下代码块将content
变量保留为空:
const file = fs.createWriteStream("/home/pi/rpi-main/descriptor.json");
http.get(url, function (response) {
let content;
response.pipe(file);
content = fs.readFileSync("/home/pi/rpi-main/descriptor.json", { encoding: "utf-8" });
});
但是,如果我使用fs.readFile读取文件,则内容应为原样。
为什么在同步呼叫中会发生这种情况?
答案 0 :(得分:1)
这是因为pipe
是一个异步函数,因此当您调用readFileSync
时,它实际上还没有开始向文件中写入任何内容。
您应该在管道的finish
事件的回调中读取文件。
response.pipe(file).on('finish', () => {
content = fs.readFileSync(filename, { encoding: "utf-8" });
});