如果我使用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()
方法。这样可以避免所有手动管道和类型检查。
答案 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())