对于一个项目,我使用网络模块来创建一个“迷你网络框架”
我在处理这个回调时遇到了很多麻烦
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很新,我仍然对如何使用回调感到困惑。任何意见都表示赞赏!
答案 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
)调用此回调,那么一切都会有效。