我正在嘗試使用RxJS進行簡單的短期調查。它需要每delay
秒向服務器上的位置path
發出一次請求,一旦達到以下兩個條件之一就結束:回調isComplete(data)
返回true或已嘗試服務器超過maxTries
。這裏是基本的代碼:RxJS 5.0「do while」like mechanism
newShortPoll(path, maxTries, delay, isComplete) {
return Observable.interval(delay)
.take(maxTries)
.flatMap((tryNumber) => http.get(path))
.doWhile((data) => !isComplete(data));
}
然而,doWhile不RxJS 5.0存在,因此條件的地方只能儘量服務器maxTries
作品,由於採取()調用,但isComplete
條件不工作。我怎樣才能做到這一點,所以觀察值將next()值,直到isComplete返回true,此時它將next()該值和complete()。
我應該注意,takeWhile()
不適合我這裏工作。它不會返回最後一個值,這實際上是最重要的,因爲那是當我們知道它已完成時。
謝謝!
可能的重複:http://stackoverflow.com/questions/36007911/rxjs-poll-until-interval-done-or-correct-data-received –
這不是一個重複的問題是要求替換'doWhile'。 –