如果我正在使用 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/