0
我寫了一個通用的請求方法,該方法應該在請求運行時顯示加載指示符。如果發生錯誤(如404),我在.catch
然後return Observable.empty()
中顯示消息,以便下面的代碼不會崩潰(因爲沒有數據返回)。finally()在catch()中返回empty()時不會調用
最大的問題是,然後.finally
也不會被調用。這是一個錯誤?有沒有解決方法?這是我的代碼:
res = Observable
.of(true)
.do(() => this.store.dispatch(new ShowLoadingIndicatorAction()))
.switchMap(() => this.http.get(url, { headers: this.headers }))
.publishReplay(1)
.refCount()
.catch(error => {
this.messages.handleRequestError(error);
return Observable.empty();
})
.finally(() => this.store.dispatch(new HideLoadingIndicatorAction()));
// then later:
res.subscribe(doStuffWithData);
嘖嘖,你似乎是正確的!我正在使用5.0.3。似乎在Ionic中顯示消息會阻止加載指示器...我應該使用console.log來測試它。謝謝,並對不起:) – MiB
好吧 - 也許你可以用「離子」標記questin,然後提供一個自己的答案,以防其他人在這個問題上絆倒:) – olsn
嗯,這個問題似乎沒有那麼有用:結果我們的應用程序顯示了幾個加載指示符,其中一個未被關閉,因爲.finally()調用實際上在該流中缺失。所以一切按預期工作,問題出現在鍵盤前面.... – MiB