0
考虑下面ReactiveSwift:重试了n次,然后执行一些代码
func test() -> SignalProducer<String, Error> {
return SignalProducer<String, Error> { observer, _ in
...
}
}
test()
.on(value: { s in
print(s)
})
.retry(upTo: 2)
.start()
}
代码是否有重试了N次,然后(如果它失败了所有的尝试)执行一些回调内置方式?
当然可以引入一个本地计数器并计算.on(failed: _)
中的失败次数,然后在计数器等于n + 1时执行一些操作,但还有其他方法可以执行吗?
这里的关键是订单,加上之前的'.retry'的' .on'处理程序仅传递最后一个错误(在这种情况下为期望的效果)。我不知何故错过了这一点。 – Buddy
是的,每个操作员实际上都会创建一个新的信号/生产者,用一些逻辑或转换来包装前一个。因此,在您的原始代码中重试会重试生产者,如前所有代码所定义的那样,其中包括“on”副作用。 – jjoelson