gpt4 book ai didi

swift - 如果 ReactiveCocoa 4 中下一个信号没有发送,则在延迟后重试

转载 作者:行者123 更新时间:2023-11-28 09:34:25 24 4
gpt4 key购买 nike

我在 Swift 中使用 ReactiveCocoa 4.0。我有一个信号叫做 startedSignal类型 Signal<String, NoError>我在 View Controller 中订阅的。

startedSignal.observeNext { _ in
// Do stuff
}

我基本上想等几秒钟,然后如果 startedSignal 就做点别的事不发送任何下一个值。我查看了文档,看到了类似 retry 的内容在 SignalProducer但我不确定如何使用它来实现这一目标,因为 startedSignal未完成或发送错误。

最佳答案

同时 Rex如果您有一些更高级的用例并且您不想自己实现此逻辑,这很有用,您实际上可以使用 ReactiveCocoa 中的现有运算符来执行此操作, 使用 timeoutWithError 的组合和 flatMapErrorretry :

signal
.promoteErrors(Error.self)
.timeoutWithError(
.Timeout,
afterInterval: interval,
onScheduler: QueueScheduler()
)
.flatMapError { error in
return anotherProducer
}

// Somewhere else:
private enum Error: ErrorType {
case Timeout
}

关于swift - 如果 ReactiveCocoa 4 中下一个信号没有发送,则在延迟后重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com