iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0

基本 Operators

  1. Publisher

    • Just: 發送單一值並隨後完成的 Publisher。
    • Empty: 只發送完成事件,不發送任何值。
    • Fail: 發送失敗事件,不發送任何值。
  2. Subscription Operators

    • subscribe(on:): 指定上游 Publisher 在哪個排程器上運行。
    • receive(on:): 指定下游 Subscriber 在哪個排程器上接收數據。

變換 Operators

  1. map(:)

    • 轉換輸入數據並返回另一個 Publisher。
  2. flatMap(maxPublishers:_:)

    • 將 Publisher 映射到另一個 Publisher,並將結果展平成單一 Publisher。
  3. replaceNil(with:)

    • 將數據流中的 nil 值替換成指定的值。
  4. replaceEmpty(with:)

    • 當上游 Publisher 是空的時候發送一個預設值。
  5. scan(::)

    • 類似於 reduce 操作,一次處理一個值並將結果累積。

過濾 Operators

  1. filter(_:)

    • 過濾掉不符合條件的數據。
  2. removeDuplicates()

    • 移除連續重複的值。
  3. compactMap(_:)

    • 映射並移除 nil 值。
  4. first(where:)

    • 發送第一個符合條件的值並隨後完成。
  5. dropFirst(_:)

    • 跳過指定數量的值。

組合 Operators

  1. merge(with:)

    • 將多個 Publisher 合併為一個 Publisher。
  2. combineLatest(::)

    • 當其中任意一個 Publisher 發送數據時,將所有 Publisher 的最新數據作為元組發送。
  3. zip(::)

    • 將多個 Publisher 的數據逐對壓縮為元組,每當所有 Publisher 都有新值時發送。
  4. switchToLatest()

    • 將新的 Publisher 發送的數據流切換到最新的 Publisher。

調度 Operators

  1. delay(for:tolerance:scheduler:)

    • 延遲指定時間發送數據。
  2. throttle(for:scheduler:latest:)

    • 限制在指定時間內發布的數據頻率。
  3. debounce(for:scheduler:)

    • 若指定時間內沒有新數據到達,則發送最新的數據。

終結 Operators

  1. collect()

    • 收集所有數據並發送為一個數組。
  2. sink(receiveCompletion:receiveValue:)

    • 訂閱數據流並提供完成處理和值處理的閉包。

上一篇
Combine基本介紹
下一篇
Publisher和AnyCancellable
系列文
手機Swift性能專家30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言