为什么控制流不遵循代码执行顺序?

时间:2014-09-23 06:08:16

标签: javascript node.js

我在nodejs

中尝试了以下示例
"use strict";

const 
  fs = require('fs');

fs.readFile('target.txt',function(err, data){
if (err) { throw err;
}
  console.log(data.toString())

})

fs.writeFile('target.txt','writing some content',function(err){
  if(err)
    throw err;
console.log("file saved")
})

根据代码,我读取文件,打印其内容。然后我在同一个文件中写入一些内容并打印保存在控制台中的文本文件。但我的输出是

file saved
writing some content

首先执行writeFile函数而不是readFile。为什么会发生这种情况,如何避免这种情况?

1 个答案:

答案 0 :(得分:5)

作为第二个参数传递给这两个函数的函数是回调。它们在操作完成时执行 - 并且不保证执行顺序。

为确保在读取完成后发生写入,请放置代码以触发对readFile方法的回调的写入。

"use strict";

const fs = require('fs');

fs.readFile('target.txt', function(err, data) {
    if (err) throw err;
    console.log(data.toString());

    fs.writeFile('target.txt', 'writing some content', function(err) {
        if(err) throw err;
        console.log("file saved")
    });
});