将原型方法传递给Promise的then方法

时间:2017-03-31 21:30:03

标签: javascript node.js

我有一个名为readFilePromise的promisified方法,它从fs的readFile方法解析为Buffer对象。当我执行以下行

return readFilePromise(filePath).then(Buffer.prototype.toString.call);

我收到以下错误:

  

TypeError:undefined不是函数

然而,当我执行块时:

return readFilePromise(filePath).then((data) => {
    return Buffer.prototype.toString.call(data);
});

我没有错误,代码执行正常。

在我看来,他们应该是一样的。我错过了一些明显的东西吗?

节点v6.10.1

1 个答案:

答案 0 :(得分:1)

Buffer.prototype.toString.call只是Function.prototype.call,它使用第一个对象作为上下文来调用this。在您的第一个示例中,this call内的呼叫将为undefined

您需要将call绑定到Buffer.prototype.toString,例如Buffer.prototype.toString.call.bind(Buffer.prototype.toString)

return readFilePromise(filePath)
   .then(Buffer.prototype.toString.call.bind(Buffer.prototype.toString))