javascript回调 - 处理用fs.readFile读取文件

时间:2016-10-05 18:52:54

标签: javascript callback

对于一个项目,我使用网络模块来创建一个“迷你网络框架”

我在处理这个回调时遇到了很多麻烦

var sendFile(path) {
  fs.readFile(path, config, this.handleRead.bind(this));
}

其中readFile定义为:

var handleRead = function(contentType, data, err) {
  if (err) {
    console.log(err);         //returns properly
  } else {
    console.log(data);        //returns properly
    console.log(contentType)  //returning undefined
}

到目前为止,这段代码的工作原理是我可以捕获错误并正确地写入数据。

我的问题是:如何通过回拨发送contentType?

我试过了 -

var sendFile(path) {
  var contentType = ContentType['the path type']
  fs.readFile(path, config, this.handleRead(contentType).bind(this));
}

但是这会导致数据和错误被定义。

我对js很新,我仍然对如何使用回调感到困惑。任何意见都表示赞赏!

1 个答案:

答案 0 :(得分:1)

.bind()让你做的不仅仅是设置" context" (函数的this值)。你也可以"绑定"函数中的参数。

尝试:

function sendFile(path) {
  var contentType = ContentType['the path type']
  fs.readFile(path, config, this.handleRead.bind(this, contentType));
}

这将传递一个回调,其上下文设置为this,其第一个参数设置为contentType。只要使用data(可能是err)调用此回调,那么一切都会有效。