Новичок в rxSwift и пытается освоить несколько простую функцию. Когда .timeout
используется в наблюдаемой последовательности, он вернет сообщение об ошибке Unhandled error happened: Sequence timeout.
, если одна из наблюдаемых в последовательности не произвела событие.
Это моя попытка больше не обрабатывать наблюдаемуюполучение событий, если есть лучший способ добиться этого, пожалуйста, предложите это!
Как я могу отключить оповещение, если оператор .timeout
возвращает сообщение об ошибке.
.timeout
информация: Summary
Применяет политику тайм-аута для каждого элемента в наблюдаемой последовательности. Если следующий элемент не получен в течение указанного времени ожидания, начиная с его предшественника, TimeoutError передается наблюдателю. Декларация
dueTime
Максимальная продолжительность между значениями до истечения времени ожидания.
scheduler
Планировщик для запуска таймера времени ожидания.
Returns
Наблюдаемая последовательность с RxError.timeout в случае тайм-аута.
Код:
Observable.combineLatest(currentUser, opponent, game)
.timeout(3, scheduler: MainScheduler.instance)
.subscribe(onNext: { (arg) -> Void in
let (currentUser, opponent, game) = arg
if game.isPlayersTurn(currentUser) {
self._turnState.onNext(.yourTurn)
} else if game.isPlayersTurn(opponent) {
self._turnState.onNext(.theirTurn)
} else if game.isTie() {
self._turnState.onNext(.tie)
} else if game.gameData.winner == currentUser.userId {
self._turnState.onNext(.win(opponentWon: false))
} else if game.gameData.winner == opponent.userId {
self._turnState.onNext(.win(opponentWon: true))
}
})
.disposed(by: disposeBag)
}