Я пытаюсь использовать RxJS для простого короткого опроса. Он должен делать запрос каждые delay
секунд к местоположению path
на сервере, заканчивая выполнением одного из двух условий: либо обратный вызов isComplete(data)
возвращает true, либо он пытался использовать сервер более maxTries
. Вот основной код:
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
, работает благодаря вызову take(), но условие isComplete
не работает. Как я могу сделать так, чтобы наблюдаемые значения next() были до тех пор, пока isComplete не вернет true, после чего оно будет next() это значение и complete().
Должен отметить, что takeWhile()
у меня здесь не работает. Он не возвращает последнее значение, которое на самом деле является самым важным, поскольку именно тогда мы знаем, что это сделано.
Спасибо!
doWhile
. - person Bjorn   schedule 10.11.2016