我正在尝试对mqtt-client connect-event(https://www.npmjs.com/package/mqtt#event-connect)使用bindCallback并出现错误。我在做什么错了?
const client = mqtt.connect("...")
const clientOnObs = bindCallback(client.on)
clientOnObs('connect').subscribe(console.log)
错误
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)
package.json
{
"dependencies": {
"i": "^0.3.6",
"mqtt": "^2.18.8",
"rxjs": "^6.4.0"
}
}
node -v
v10.10.0
npm -v
6.5.0
答案 0 :(得分:1)
要在对象的函数上使用bindCallback时,必须注意上下文。 bindCallback操作将使用apply调用该函数,并将其作为当前上下文传递。为了修复它,您可以将代码重写为:
const clientOnObs = bindCallback(client.on);
clientOnObs.call(client, 'connect').subscribe(console.log);
答案 1 :(得分:0)
另请参阅https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
另一种风格:
x: (textInputField !== "" && isArabicAlignment()) ?
(text_input.x + text_input.contentWidth)) : //Changing Cursor in reverse.