0

正常に動作している Http 呼び出しにオブザーバブルを使用していますが、コントローラーを変更したところ、コードが明らかにエラーを処理していないことに気付きました。

これが私のサービス(SellingMenuService)のコードです。

public getVarieties(): Observable<any> {
    return this.http.get(this.varietyListUrl).map(response => {
        return response.json();
    }, (error: any) => {
        console.log(error);
        console.log('error finding variety list');
        // TODO: implement error handling here.
    });
}

そして、ここに私のコンポーネントからの関連コードがあります:

constructor(public sellingMenuService: SellingMenuService) { }

getVarietyList(): void {        
    this.sellingMenuService.getVarieties().subscribe(res => {            
        console.log(res);
        this.varieties = res;
    });         
}

そして、ここに私のコンソールのいくつかのエラーがあります: ここに画像の説明を入力

500 エラーが発生した場合、上記のサービスからのコンソール ログにヒットすることはありませんか? なぜ彼らはしないのですか?

4

2 に答える 2

1

メソッド内でエラーをキャッチしようとしてmapいますが、内部で行う必要がありますsubscribe

public getVarieties(): Observable<any> {
    return this.http.get(this.varietyListUrl).map(response => {
        return response.json();
    }).subscribe((res: any) => {
        console.log(res);
    }, (error: any) => {
        console.log(error);
        console.log('error finding variety list');
        // TODO: implement error handling here.
    });
}

3 番目のパラメーターを observable に追加することもできます。オブザーバブルが次の場合に解決されますfinalized:

public getVarieties(): Observable<any> {
    return this.http.get(this.varietyListUrl).map(response => {
        return response.json();
    }).subscribe((res: any) => {
        console.log(res);
    }, (error: any) => {
        console.log(error);
        console.log('error finding variety list');
        // TODO: implement error handling here.
    }, () => {
        console.log("finalized")
    });
}

ここで詳細を読むことができます: http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html

于 2016-10-27T18:36:28.840 に答える