gpt4 book ai didi

angular - rxjs 主题 switchmap http 错误

转载 作者:太空狗 更新时间:2023-10-29 17:39:49 24 4
gpt4 key购买 nike

当一个新的 http. get() 请求被触发。

问题是当我处理 http 错误(如超时)时,在 html 中调用的方法 _postMPCHC.next(...) 不再起作用...我是否需要在出错时重新创建订阅?怎么样?

import {Component} from '@angular/core';
import {NavController, NavParams, Toast} from 'ionic-angular';
import {Http, URLSearchParams} from '@angular/http';
import {AppSettings} from '../../appSettings';
import {Subject} from 'rxjs/Subject';


@Component({
templateUrl: 'build/pages/video/video.html'
})
export class VideoPage {
_postMPCHC: any= new Subject();

constructor(private http: Http, private nav: NavController) {
this.defineHttp();
}

defineHttp() {

var sub = this._postMPCHC.switchMap((x: string) => {
let params: URLSearchParams = new URLSearchParams();
params.set('token', AppSettings.API_TOKEN);
params.set('prog', 'mhz');
params.set('prog', 'mpchc');
params.set('action', x);

return this.http.get(AppSettings.API_ENDPOINT, { search: params })

}).timeout(5000, new Error('timeout exceeded')).subscribe(x => { },
error => {
let toast = Toast.create({
message: 'Server response: ' + <any>error,
duration: 3000,
position: 'middle'
});
this.nav.present(toast);
})

}
}

最佳答案

问题是当流出现错误时——它结束了。如果你想处理 http 错误但保持主流事件,你应该在 http 流级别处理错误。请参阅本文 - Error handling. What to do when error kills stream .

因此,在您的情况下,您可以通过添加 .pipe(catchError(.. .)) - 它将使您的 mai 流保持事件状态并捕获 http 错误

关于angular - rxjs 主题 switchmap http 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38682895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com