【发布时间】:2020-03-31 19:07:59
【问题描述】:
我在理解 nodejs 将文本写入/附加到文件中的回调方法的调用顺序时遇到问题:
fs.writeFile(path.join(__dirname, '/test', 'hello.txt'), 'Hello ', (err) => {
if (err) throw err;
console.log("1");
fs.appendFile(path.join(__dirname, '/test', 'hello.txt'), 'World!', (err) => {
if (err) throw err;
console.log("2");
});
console.log("3");
});
执行这段代码我得到输出顺序:1、3、2
但是逻辑调用顺序不是 1、2、3 吗?或者 console.log("3") 不是简单地“等待”到 appendFile 完成执行吗?
我猜我这里完全搞错了。
【问题讨论】:
-
不,它不会等待,这就是为什么你必须使用回调。
writeFile回调中的所有代码都会立即执行,并且对appendFile的嵌套回调将添加到待办事项列表中,以供该操作完成时使用。 -
@jonrsharpe 您的意思是立即按 1、追加、3 的顺序?然后追加函数调用?
-
是的,这正是您所看到的。
标签: node.js