rxjs运算符在订阅调用后定义逻辑

时间:2018-01-22 09:20:09

标签: rxjs

    const source = Rx.Observable.of(1);

    const example = source
      .do(val => console.log('do called'));
    example.subscribe(val => console.log('subscribe called'));

    //Output :
    do called
    subscribe called

此示例显示dosubscribe之前执行。

执行 subscribe后,我需要使用哪个运算符来定义逻辑

我需要这个来定义逻辑一次,并且必须在每次订阅调用之后执行,这也有助于尊重SRP(单一责任原则)一个例子是使用我正在寻找的某种特定运算符来处理拦截器中的缓存逻辑for和订阅服务

1 个答案:

答案 0 :(得分:0)

我处理拦截器的方式如下,如果我正确理解你的要求,它可能会有所帮助。

...
private interceptor(observable: Observable<Response>): Observable<Response> {
    return observable
        .map(res => {
            return res;
        })
        .catch((err) => {
            //handle Specific Error
            return Observable.throw(err);
        })
        .finally(() => {
            //After the request;
            console.info("After the Request")
        });
}

protected get(req: getHttpParams): Observable<Response> {
    return this.interceptor(this.httpClient.get(`${path}/${String(req.id)}`, req.options));
}
...

我还建议您专门查看Angular 5's in-built interceptor http次请求