RxJS通过fromEventPattern中的NodeEventHandler引发错误

时间:2019-05-22 08:14:58

标签: 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返回的所得observable进行检查,以检查类型,但这似乎有些冗长:

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

subject(我尝试用fromEventPattern代替)具有特定的.error()方法。这样可以避免所有手动管道和类型检查。

1 个答案:

答案 0 :(得分:1)

试用此包装器

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())