为什么异步WriteFile的方法表现同步?

问题描述 投票:-2回答:1

我有一个简单的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");
javascript node.js asynchronous callback
1个回答
0
投票

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");
© www.soinside.com 2019 - 2024. All rights reserved.