我正在尝试将 bindCallback 用于 mqtt-client connect-event (https://www.npmjs.com/package/mqtt#event-connect https://www.npmjs.com/package/mqtt#event-connect)并出现错误。我究竟做错了什么?
const client = mqtt.connect("...")
const clientOnObs = bindCallback(client.on)
clientOnObs('connect').subscribe(console.log)
error
TypeError: Cannot read property '_events' of undefined
at _addListener (events.js:203:19)
at addListener (events.js:259:10)
at Observable._subscribe (/Users/robert.rajakone/repos/2018_diprem/example-message-simulator/node_modules/rxjs/src/internal/observable/bindCallback.ts:215:26)
at Observable._trySubscribe (/Users/robert.rajakone/repos/2018_diprem/example-message-simulator/node_modules/rxjs/src/internal/Observable.ts:231:19)
at Observable.subscribe (/Users/robert.rajakone/repos/2018_diprem/example-message-simulator/node_modules/rxjs/src/internal/Observable.ts:212:14)
at Object.<anonymous> (/Users/robert.rajakone/repos/2018_diprem/example-message-simulator/main.ts:30:24)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Module.m._compile (/usr/local/lib/node_modules/ts-node/src/index.ts:439:23)
at Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Object.require.extensions.(anonymous function) [as .ts] (/usr/local/lib/node_modules/ts-node/src/index.ts:442:12)
包.json
{
"dependencies": {
"i": "^0.3.6",
"mqtt": "^2.18.8",
"rxjs": "^6.4.0"
}
}
node -v
v10.10.0
npm -v
6.5.0
当你想在对象的函数上使用bindCallback时,你必须注意上下文。操作bindCallback将使用apply调用该函数并将其作为当前上下文传递。为了修复它,您可以将代码重写为:
const clientOnObs = bindCallback(client.on);
clientOnObs.call(client, 'connect').subscribe(console.log);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)