簡體   English   中英

Rxjs:重試諾言?

[英]Rxjs: retry a promise?

不知道為什么我的諾言要解決卻要重試。

var getResultsStream = url => Rx.Observable.onErrorResumeNext( 
     Rx.Observable.defer( () => Rx.Observable
        .fromPromise( getSearchResults(url)
        .catch(error => Rx.Observable.of(`Error: ${error}`)) )
        .timeout(20000, new Error(`Timeout: ${url}`))
     )
     .do( e => console.log(`Retrying: ${url}`))
     .retry(3)
)

重試一次3次更好的方法嗎?

除非您對defer和/或onErrorResumeNext有特殊用途,否則可以將其全部刪除,然后簡單地使用:

 const request = url => Rx.Observable.of(url) .do(url => console.log("requesting: " + url)) .switchMap(url => Rx.Observable.fromPromise(getSearchResults(url))) .timeout(20000, new Error(`Timeout: ${url}`)) .retry(3); request("http://foobar.com").subscribe(console.log, console.error); function getSearchResults(url) { // simulating request-error throw new Error("Could not reach: " + url); } 
 <script src="https://npmcdn.com/@reactivex/rxjs@5.0.0-beta.10/dist/global/Rx.umd.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM