【发布时间】:2018-09-17 15:58:55
【问题描述】:
假设我有一个元素数组 [1, 2, 3] 和 5 秒的延迟。
我想发出数组的每个元素,在当前发出的元素和下一个发出的元素之间有一个暂停。
例子:
输出:
[00:00] -- 1
[00:05] -- 2
[00:10] -- 3
我已尝试执行以下操作:
import ReactiveSwift
let startTime = DispatchTime.now().uptimeNanoseconds
let arrayProperty = MutableProperty<[Int]>([1, 2, 3])
let arraySignal = arrayProperty.signal
arraySignal
.flatMap { $0 }
.delay(2, on: QueueScheduler.main)
.observeValues { element in
let elapsed = DispatchTime.now().uptimeNanoseconds
print("\((elapsed - startTime) / 1_000_000_000) -- \(element)")
}
但它只会延迟第一个元素的发射并立即发射下一个元素。
我找不到合适的运算符组合来使用,也许它们在 ReactiveSwift 框架中丢失了,而且我是反应式编程的初学者,所以实现我自己的运算符太难了。
【问题讨论】:
标签: swift reactive-programming reactive-cocoa reactive-swift