[英]How to interrupt SafeSignal in ReactiveSwift?
嗨,我是反應敏捷的新手。 在我的新項目中,我正在使用ReactiveSwift。 我正在通過使用SafeSignal變量來觀察價值。 我想在獲取值之前中斷信號。 請幫我解決這個問題。
通常,當您observe
Signal
或start
SignalProducer
,您將獲得Disposable
。
這可以用來結束觀察:
let property = MutableProperty<Int>(0)
let signalDisposable = property.signal.observeValues {
print("Signal: \($0)")
}
let producerDisposable = property.producer.startWithValues {
print("Producer: \($0)")
}
property.value = 1 // Signal and Producer receive value 1
signalDisposable?.dispose() // End signal observation
property.value = 2 // Only producer receives value 2
producerDisposable.dispose() // End producer observation
property.value = 3 // No one receives value 3
如果您要為某些(較長的)工作創建自己的SignalProducer
,則必須牢記處理以停止正在進行的工作:
let performNetworkCall = SignalProducer<Data, Error> { (observer, disposable) in
let url = URL(string: "https://www.download.com")!
let downloadTask = URLSession.shared.dataTask(with: url, completionHandler: { (data, _, error) in
// Handle completion
})
downloadTask.resume()
disposable.observeEnded {
// Cancel the download on disposal!
downloadTask.cancel()
}
}
否則,您的觀察者將被拆離,但觀察者開始的工作仍將繼續
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.