take(1)
здесь не обязательно.take(1)
удостоверился бы, что таймер не повторяется.
Observable.timer
- это оператор, который периодически генерирует значение .Если параметр period
по-прежнему не равен nil
, в этом случае TimerOneOffSink
будет создан .TimerOneOffSink
испускает один элемент, а затем завершается и удаляется.
Например:
Observable<Int>
.timer(3.0,
scheduler: MainScheduler.instance)
.take(10)
.subscribe(
onNext: { print($0) },
onCompleted: { print("Completed") },
onDisposed: { print("Disposed") }
)
напечатает:
0
Completed
Disposed
Посоветовавшись с Марином Тодоровым , одним из авторов, он подтвердил, что это просто недосмотр.
Вся идея фрагмента кода заключается в ожидании между повторными попытками с использованием таймера сдлительность увеличивается на 1 секунду: результатом является пошаговая стратегия отсрочки с максимальным количеством попыток.