如何使用rxjs bindCallback

如何使用rxjs bindCallback,rxjs,Rxjs,我正在尝试对mqtt客户机连接事件()使用bindCallback,并得到错误消息。我做错了什么 const client = mqtt.connect("...") const clientOnObs = bindCallback(client.on) clientOnObs('connect').subscribe(console.log) 错误 当您想对对象的函数使用bindCallback时,您必须考虑上下文。操作bindCallback将使用apply调用函数,并将其作为当前上下文传

我正在尝试对mqtt客户机连接事件()使用bindCallback,并得到错误消息。我做错了什么

const client = mqtt.connect("...")
const clientOnObs = bindCallback(client.on)
clientOnObs('connect').subscribe(console.log)
错误


当您想对对象的函数使用bindCallback时,您必须考虑上下文。操作bindCallback将使用apply调用函数,并将其作为当前上下文传递。为了修复它,您可以将代码重写为:

const clientOnObs = bindCallback(client.on);
clientOnObs.call(client, 'connect').subscribe(console.log);
另见

另一种风格:

const client = mqtt.connect("...")
const clientOnObs = bindCallback(client.on).bind(client)
clientOnObs('connect').subscribe(console.log)
const clientOnObs = bindCallback(client.on);
clientOnObs.call(client, 'connect').subscribe(console.log);
const client = mqtt.connect("...")
const clientOnObs = bindCallback(client.on).bind(client)
clientOnObs('connect').subscribe(console.log)