【问题标题】:Why does asynchronous writeFile method behave synchronously?为什么异步 writeFile 方法的行为是同步的?
【发布时间】:2019-06-05 04:20:26
【问题描述】:

我有一个简单的 JS 文件,它读取文本文件并写入并读取更改的文件。出于学习目的,我实现了以下代码。

当控件到达writeFile时,它不应该在后台运行并且控件应该转到console.log("Test")行,然后回到writeFile吗?但它实际上完全执行 writeFile 并且控制转到基本上是同步行为的日志行。我在这里遗漏了什么吗?

console.log("Begin")
var fs = require("fs");
fs.readFile("input.txt", function(err, data) {
  if (err) {
    console.log(err);
  } else {
    console.log("Inside Read " + data.toString());
    fs.writeFile("input.txt", "Replaced Text", function(err) {
      if (err) {
        console.log(err);
      } else {
        console.log("Inside Write");
        var data = fs.readFileSync("Input.txt") console.log(data + " is the replaced text");
      }
      console.log("Test2");
    });
  }
});
console.log("Ended");

【问题讨论】:

  • console.log("Test2")writeFile 回调中。

标签: javascript node.js asynchronous callback


【解决方案1】:

console.log("Test2")writeFile 回调函数内,直​​到writeFile 完成后才会运行。

var fs = require("fs");
fs.readFile("input.txt", function(err, data) {
  console.log("This will second, after print after readFile is complete);
  fs.writeFile("input.txt", "Replaced Text", function(err) {
    console.log("This will print last, after writeFile is complete");
  });
  console.log("This will print third, before writeFile is complete");
});
console.log("This will print first");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2012-12-27
    • 2017-01-03
    • 2016-06-09
    相关资源
    最近更新 更多