Javascript 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,

我遇到了RxJS吞咽错误的问题。所以在我的例子中,我有这样的东西:

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"))
}