Ниже приведена упрощенная версия моего проекта, с которым я сейчас борюсь.
Я бы хотел заблокировать поток , пока первый Single
не будет успешным.
Эти наблюдаемые значения должны быть двумя разделенными потоками, но с общим потоком .
Есть ли у вас идеи исправить этот код?Спасибо!
let disposeBag = DisposeBag()
var hasReturnedSingle = false
func returnSingle() -> Single<String> {
return Single<String>.create { single in
print("hasReturnedSingle: \(hasReturnedSingle)")
DispatchQueue.main.asyncAfter(deadline: .now()+3.0) {
single(.success(()))
hasReturnedSingle = true
}
return Disposables.create()
}
}
returnSingle().asObservable()
.subscribeOn(MainScheduler.instance)
.asSingle()
.subscribe()
.disposed(by: disposeBag)
returnSingle().asObservable()
.subscribeOn(MainScheduler.instance)
.asSingle()
.subscribe()
.disposed(by: disposeBag)
Результат:
hasReturnedSingle: false
hasReturnedSingle: false
Ожидание:
hasReturnedSingle: false
hasReturnedSingle: true