我有一个名为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
答案 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))