Я пытаюсь использовать RxJS для простого короткого опроса. Он должен сделать запрос один раз каждые delay
секунд до местоположения path
на сервере, заканчивающегося после достижения одного из двух условий: либо обратный вызов isComplete(data)
возвращает значение true, либо попробовал сервер более maxTries
. Вот основной код:RxJS 5.0 «do while» как механизм
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, и в этот момент он будет следующим() этим значением и complete().
Следует отметить, что здесь takeWhile()
не работает. Он не возвращает последнее значение, которое на самом деле является самым важным, так как мы знаем, что это сделано.
Спасибо!
Возможно дубликат: http://stackoverflow.com/questions/36007911/rxjs-poll-until-interval-done-or-correct-data-received –
Это не дублировать в том смысле, что в вопросе возникает вопрос о замене 'doWhile'. –