Node.js中的回调顺序

没有恩格

我在理解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吗?还是在appendFile完成执行之前,console.log(“ 3”)不会简单地“等待”?

猜猜我在这里完全错了。

jo3rn

console.log("3");不会“等待”,因为它不是的回调的一部分appendFile只有回调(即console.log("2");)“等待”appendFile完成。

您的代码顺序如下:

  1. 写“你好”到文件
  2. 编写“ Hello”时:打印1到控制台。
  3. 什么时候1写入控制台:开始附加“世界!” 到文件

现在,将触发2个进程,可能首先执行4个进程:

  1. 在追加“世界!”的过程中 已经开始:打印3到控制台
  2. 在追加“世界!”的过程中 已完成:打印2到控制台

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章