簡體   English   中英

如何在ReactiveSwift中中斷SafeSignal?

[英]How to interrupt SafeSignal in ReactiveSwift?

嗨,我是反應敏捷的新手。 在我的新項目中,我正在使用ReactiveSwift。 我正在通過使用SafeSignal變量來觀察價值。 我想在獲取值之前中斷信號。 請幫我解決這個問題。

通常,當您observe Signalstart 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM