首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误响应中断valueChanges [Angular2]

错误响应中断valueChanges [Angular2]
EN

Stack Overflow用户
提问于 2016-10-31 12:02:01
回答 2查看 1.1K关注 0票数 2

当我意识到形成和等待价值改变时,如果我认为是我的服务中的错误.

这是代码:

代码语言:javascript
复制
constructor(private fb: FormBuilder, private bankService: BankService) {
        this.page = 1;

        this.filter = this.fb.group({
            text: ['', []],
            bankC: ['', []]
        });

        this.filter.valueChanges
            // wait for a pause in typing of 200ms then emit the last value
            .debounceTime(200)
            // only accept values that don't repeat themselves
            .distinctUntilChanged()
            // map that to an observable HTTP request, using the TickerLoad
            // service and switch to that
            // observable. That means unsubscribing from any previous HTTP request
            // (cancelling it), and subscribing to the newly returned on here.
            .switchMap((val: any) => {
                return bankService.getCountry(val.bankC)
            })
            .subscribe((res) => {
                console.log(res);
            },
             (err) => {
                 console.log(err);
             });
            // send an empty array to tickers whenever clear emits by
            // merging in a the stream of clear events mapped to an
            // empty array.
    }

编辑

我发现了什么问题,是在http intreceptor里面:

代码语言:javascript
复制
intercept(observable: Observable<Response>): Observable<Response> {
        return observable.catch((err, source) => {
            if (err.status == 401) {
                this._router.navigate(['']);
                return Observable.throw(err);
                //&& !_.endsWith(err.url, 'api/auth/login')
            } else {
               return Observable.throw(err);
            }
        });

    }

这一部分是:return Observable.throw(err);

如何返回错误而不刹车订阅。

EN

回答 2

Stack Overflow用户

发布于 2016-10-31 12:15:10

如果您想重新订阅可观察的源,请在 operator之前使用subscribe()

代码语言:javascript
复制
...
.switchMap((val: any) => {
    return bankService.getCountry(val.bankC)
})
.retry(-1) // resubscribe forever
.subscribe((res) => {
    console.log(res);
}, ...
票数 2
EN

Stack Overflow用户

发布于 2022-03-19 01:52:52

我知道太晚了,但试着用-

代码语言:javascript
复制
return throwError(err);

或者你也可以抛出一个可以观察到的恢复。

代码语言:javascript
复制
return of(null);

代码语言:javascript
复制
return EMPTY;

您还可以使用RxJs管道操作符链接多个catchError操作符,如下所示-

代码语言:javascript
复制
.pipe(
    catchError((err) => throwError(err)),
    catchError((err) => of([])
);

一个抛出一个可观察的恢复错误,另一个抛出一个空可观测的恢复。通过这种方式,您可以向用户显示错误消息,并发送一个可观察到的可订阅的恢复。这永远不会打破锁链。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40341771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档