【发布时间】:2020-02-11 07:01:18
【问题描述】:
刚接触 rxSwift 并尝试学习一个简单的函数。当.timeout 用于可观察序列时,如果序列中的一个可观察对象没有发出事件,它将返回错误消息Unhandled error happened: Sequence timeout.。
这是我处理 observable 不再接收事件的尝试,如果有更好的方法来实现这一点,请提出建议!
如果.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)
}
【问题讨论】:
-
您是否只是在寻找在超时到来时显示的警报,如果是这样,您希望用户必须点击警报才能继续或仅显示通知?
-
@TalonBrown 希望在超时到来时显示警报
标签: swift error-handling timeout reactive-programming rx-swift