rxSwift的新手,它试图学习一个简单的函数。当.timeout
在可观察序列上使用时,如果序列中的一个可观察对象Unhandled error happened: Sequence timeout.
未发出事件,则它将返回错误消息。
这是我尝试处理不再接收到的可观察事件,如果有更好的方法可以实现,请提出建议!
如果.timeout
操作员返回错误消息,如何发出警报。
.timeout
信息:摘要
对可观察序列中的每个元素应用超时策略。如果从其前任开始的指定超时时间内未接收到下一个元素,则会将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)
}
在进行一些文档研究时,我发现了rxSwift的onError:处理程序。
这将在收到errorEvent时触发,从那里我可以运行一个onError: {err in errorAlert(); print("error \(err)")}
解决问题的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句