Sto cercando di utilizzare RxJS per un semplice sondaggio breve. È necessario effettuare una richiesta ogni delay
secondi sulla posizione path
sul server, terminando una volta che una delle due condizioni è stata raggiunta: o la callback isComplete(data)
restituisce true o ha provato il server più di maxTries
. Ecco il codice di base:RxJS 5.0 meccanismo "do while"
newShortPoll(path, maxTries, delay, isComplete) {
return Observable.interval(delay)
.take(maxTries)
.flatMap((tryNumber) => http.get(path))
.doWhile((data) => !isComplete(data));
}
Tuttavia, DoWhile non esiste in RxJS 5.0, in modo che la condizione in cui si può solo provare il server maxTries
opere, grazie alla chiamata take(), ma la condizione isComplete
non lo fa lavoro. Come posso fare in modo che i valori osservabili next() finchè isComplete non restituisce true, a quel punto sarà next() quel valore e complete().
Devo notare che takeWhile()
non funziona per me qui. Non restituisce l'ultimo valore, che in realtà è il più importante, poiché è quando sappiamo che è stato fatto.
Grazie!
Possibilmente un duplicato di: http://stackoverflow.com/questions/36007911/rxjs-poll-until-interval-done-or-correct-data-received –
Non è un duplicare nel senso che la domanda è chiedere una sostituzione di 'doWhile'. –