最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 1浏览 0评论

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

我有一个简单的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回调函数内并不会运行,直到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");

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

我有一个简单的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回调函数内并不会运行,直到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");
发布评论

评论列表 (0)

  1. 暂无评论