Javascript RxJS错误处理
我遇到了RxJS吞咽错误的问题。所以在我的例子中,我有这样的东西:Javascript RxJS错误处理,javascript,error-handling,reactive-programming,rxjs,Javascript,Error Handling,Reactive Programming,Rxjs,我遇到了RxJS吞咽错误的问题。所以在我的例子中,我有这样的东西: function funcThatThrowsError(fn, ..args) { return fn.bind(fn, ...args); } function fetchItems() { Observable.fromPromise( reqwest({ url: `${API_ROOT}${url}`, method,
function funcThatThrowsError(fn, ..args) {
return fn.bind(fn, ...args);
}
function fetchItems() {
Observable.fromPromise(
reqwest({
url: `${API_ROOT}${url}`,
method,
data,
contentType: "application/json"
})
).map(funcThatThrowsError(null, "someValue"))
}
const observableA = fechItems();
const observableB = ... ;
Observable
.combineLatest(
observableA,
observableB,
() => { }
)
.forEach(
() => { }, // success
(err) -> console.log(err.stack);
)
因此,基本上,我故意传递一个空值作为fn
参数,这会导致funcThatThrowsError
引发异常
问题是在这种情况下不会调用错误回调。相反,RxJS将使用自己的投掷器功能
function thrower(e) {
throw e;
}
处理这种情况的最佳做法是什么。我觉得我遗漏了一些东西。异常发生在可观察范围之外。在创建一个要传递到可观察对象的函数时,您正在提升它
如果希望链末端的错误处理程序处理它,则必须在操作符链内部提升它:
function fetchItems() {
Observable.fromPromise(
request({
url: `${API_ROOT}${url}`,
method,
data,
contentType: "application/json"
})
).map(funcThatThrowsError(content => throw new Error(content), "someValue"))
}