Рекурсивные вызовы с использованием RxSwift наблюдаютсяIOS

Программируем под IOS
Ответить
Anonymous
 Рекурсивные вызовы с использованием RxSwift наблюдаются

Сообщение Anonymous »

Я пытаюсь выполнить рекурсивный вызов, используя RxSwift.

Код: Выделить всё

import RxSwift

func observeUntil(initialValue: Int) -> Observable {

return Observable.deferred {
.just(initialValue)
}
.do(onNext: {
print("current item is", $0)
})
.flatMapLatest{ (item) -> Observable in
if item < 5 {
return Observable.just(item)
//                    .delay(.seconds(1), scheduler: MainScheduler.instance)
.flatMapLatest{observeUntil(initialValue: $0 + 1)}
} else {
return .just(item)
}
}
}
_ = observeUntil(initialValue: 0)
.subscribe()
Когда я прокомментируйте задержку в вышеуказанном коде, вывод поставляется правильно, как ниже

Код: Выделить всё

current item is 0
current item is 1
current item is 2
current item is 3
current item is 4
current item is 5
Program ended with exit code: 0
с задержкой код только выводит

Код: Выделить всё

current item is 0
Program ended with exit code: 0
Как я могу понять, что происходит, когда добавлена ​​задержка?

Подробнее здесь: https://stackoverflow.com/questions/589 ... bservables
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»