javascript - RxJS 通过 fromEventPattern 中的 NodeEventHandler 抛出错误

标签 javascript rxjs

如果我正在使用 fromEventPattern,并且自定义 API 有一个单独的错误处理程序,我如何通过处理函数 (NodeEventHandler) 将它们扔到流中?

import { fromEventPattern } from 'rxjs';

const token = someAPI.registerEventHandler(function(event) {}, function(error) {}); // API takes a second function for errors.
someAPI.unregisterEventHandler(token); 

const someAPIObservable = fromEventPattern(
  function(handler) { return someAPI.registerEventHandler(handler, handler); }, // What should be the second argument here, in order to throw the error to any subscribers
  function(handler, token) { someAPI.unregisterEventHandler(token); } 
);

我可以用错误调用处理程序(如上所述),然后通过管道从 fromEventPattern 返回结果可观察对象以检查类型,但它似乎有点冗长:

pipe(
      map((x: unknown) => {
        if (x instanceof Error) throw x;
        return x;
      }),

subject(我试图用 fromEventPattern 替换)有一个特定的 .error() 方法。这将避免所有手动管道和类型检查。

最佳答案

试试这个包装器

const yourEventObservable=new Observable(obs=>{
  const token=someAPI.registerEventHandler(res=>{
    if (res instanceof Error) 
       obs.error(x);
     obs.next(res)
  })
  return ()=>someAPI.unregisterEventHandler(token);
}).pipe(share())

关于javascript - RxJS 通过 fromEventPattern 中的 NodeEventHandler 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56252197/

相关文章:

php - 动态更新页面上的文本以响应另一个窗口中另一个页面上的事件

angular - RxJS -BehaviorSubject,onComplete 未调用

angular - 如何订阅有条件订阅结果

angular - Angular 5 中使用 rxjs 进行持久订阅

javascript - 在其派生链中调用 Observable 的 onNext() 方法

javascript - RXJS。惰性可观察

Javascript替换不替换

javascript - 如何在knockoutjs中实现复选框依赖

javascript - 使用 data-template-name 命名 Ember.js 模板

javascript - 使用 jQuery 移动点击事件的背景位置