`Promise.reject` 的可观察等效项是啥

Posted

技术标签:

【中文标题】`Promise.reject` 的可观察等效项是啥【英文标题】:What's the observable equivalent to `Promise.reject``Promise.reject` 的可观察等效项是什么 【发布时间】:2016-12-23 22:46:46 【问题描述】:

我有这个代码

    return this.http.get(this.pushUrl)
        .toPromise()
        .then(response => response.json().data as PushResult[])
        .catch(this.handleError);

我想使用observable 而不是Promise

如何将错误返回给调用方法?

Promise.reject 的等价物是什么?

    doSomeGet() 
        console.info("sending get request");

        this.http.get(this.pushUrl)
            .forEach(function (response)  console.info(response.json()); )
            .catch(this.handleError);
    

    private handleError(error: any) 
        console.error('An error occurred', error);
        // return Promise.reject(error.message || error);
    

调用方法是:

getHeroes() 
    this.pushService
        .doSomeGet();
        // .then(pushResult => this.pushResult = pushResult)
        // .catch(error => this.error = error);

【问题讨论】:

上面带有Promise.reject 未注释的代码工作得很好。我不确定为什么。你有什么想法吗? 【参考方案1】:
private handleError(error: any) 
    // previously 
    // return Observable.throw('Some error information');

    // now
    return throwError('Some error information');

另见How to catch exception correctly from http.request()?

【讨论】:

这种方法在 RXJS 中似乎已被弃用...更喜欢使用 throwError 运算符:here the documentation 已弃用。【参考方案2】:

使用 RxJS 6 Observable.throw() 已更改为 throwError()

Observable.throw(new Error());

// becomes

throwError(new Error());

来源:RxJS v5.x to v6 Update Guide - Depracations

【讨论】:

以上是关于`Promise.reject` 的可观察等效项是啥的主要内容,如果未能解决你的问题,请参考以下文章

MAKEWORD c++ Windows 宏的 C# 等效项是啥?

stringByEvaluatingJavascriptFromString (iOS 方法,Android 等效项是啥?)

SwiftUI 的 minimumFontScale 等效项是多少?

Excel 的 NORMSDIST 函数的 MATLAB 等效项是啥?

Excel IFERROR 的 R 等效项是啥?

case/switch 语句的 Python 等效项是啥? [复制]