回调混淆fs模块

时间:2014-04-21 03:59:28

标签: javascript node.js

我目前编写此脚本以在节点中运行:

console.log('Node starting...');
var fs = require('fs');
fs.readFile('./app.js', function(err, data){
    // if(err) throw err;
    console.log(data.toString());
});

我理解传递给readFile的函数(文件,回调(错误,数据)是一个回调函数,它会在收到数据参数时执行。

我的问题是,我对实际传递此函数的数据一无所知?

文档说明

  

回调传递两个参数(错误,数据),其中数据是   文件的内容。

究竟是什么传递了回调函数的参数?

1 个答案:

答案 0 :(得分:2)

fs.readFile函数获取数据,然后以数据作为参数调用回调函数。

你可以自己编写这样一个函数(事实上,你可能会更多地使用Node.js这样做),如下所示:

function readFile(filename, callbackFunction) {
  var data;

  // ...do some work to get the data...

  if(somethingBadHappened) {
    callbackFunction("An error occurred!")
    return;
  }

  // success!
  callbackFunction(null, data);
}

您就像使用fs.readFile一样使用它:

function myCallback(err, data) {
  console.log( data.toString() );
}

readFile( './myfile.txt', myCallback );

如果您愿意,可以阅读actual source of fs.readFile。它很短(但比我的例子复杂一点)!