Rxjs 在响应时创建可观察到的RxJ

Rxjs 在响应时创建可观察到的RxJ,rxjs,electron,reactive-programming,Rxjs,Electron,Reactive Programming,使用sendSync创建一个可观察对象很容易。我想使用ipcMain创建一个可观察的。在上,而不使用简单的回调 return of(this.electronService.ipcRenderer.sendSync(channel.IPCMAIN_REQUEST_DATA)); 类似的东西,但不起作用 return this.electronService.ipcRenderer.on(channel.IPCMAIN_RESPONSE_DATA, (event , response) =>

使用sendSync创建一个可观察对象很容易。我想使用ipcMain创建一个可观察的。上,而不使用简单的回调

return of(this.electronService.ipcRenderer.sendSync(channel.IPCMAIN_REQUEST_DATA));
类似的东西,但不起作用

return this.electronService.ipcRenderer.on(channel.IPCMAIN_RESPONSE_DATA, (event , response) => {
  return of(response);
});
试试这个

return (new Observable(subscriber=>{
    this.electronService.ipcRenderer.on(channel.IPCMAIN_RESPONSE_DATA, (event , response) => {
      subscriber.next(response)
    });
}));

如果触发该事件,则可观察对象将发出一个新值

尝试这样构造可观察对象(rxjs 5):


当您取消订阅Observable时,它应该会删除侦听器。

不起作用,但我认为您的操作是正确的。我的代码可能有问题+1.谢谢你的帮助。新年快乐:)请记住,此代码是在订阅observable this.electronService.ipcRenderer.on后执行的,数据肯定在那里。我的问题是如何使用一个可观测值将数据/数组返回到角度分量。由于ipcMain/on返回回调(event,msg),所以我不确定是否可以。恢复到使用承诺—比回调更优雅的东西来更新我的组件。同样有效。在角度分量中,你不能像返回observable()的函数名那样使用observable()。订阅(你的dataArray=>{console.log(dataArray)}),你不能使用,因为of(据我所知)与已知值一起工作,而你的数据数组是未来值(未知)但对于你们的角分量,of算符和新的可观测值之间并没有区别,毕竟两者都是可观测的。对不起,我的英语不好
return Observable.fromEvent(ipcRenderer, channelName, (event, payload) => payload);