iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0
自我挑戰組

30 天了解 Swift 的 Combine系列 第 12

30 天了解 Swift 的 Combine: [12] Operator 6. 上流整合類型

  • 分享至 

  • xImage
  •  

上流整合類型由於沒辦法直接用 Sequence.Publisher 的方式測試, 這部分的 Demo code 將於日後更新.

6-1. zip: 等待不同的上游發佈, 只有指定的所有上游發佈後, 再一次發佈組合後的元素, 當任一上游發佈結束時, 會立即發佈結束.

zip(,) 想會不會好一些呢?



/******demo code*******/

Publishers.Zip(
            (1...5).publisher,
            (6...10).publisher)
            .sink{print("get value:", $0)}

/******console*********/

get value: (1, 6)
get value: (2, 7)
get value: (3, 8)
get value: (4, 9)
get value: (5, 10)

/*******Rarbles********/

-----1-----2-----3-----4-----5-----|
  -----6-----7-----8-----9-----10-----|
  
              zip
              
-------1-----2-----3-----4-----5------|
       6     7     8     9     10

6-2. combineLatest: 相似與 zip, 一旦所有上游發佈過後, 才會發佈第一次, 而後續只要任一上游發佈, 就會將所有上游最新的元素組合發佈.



/*******Rarbles********/

-----1-----2-----3-----|
  -----------6------8-----9-----10-----|
  
  combineLatest
  
-------------2---3--3-----3-----3-------|
             6   6  8     9     10

6-3. merge: 將指定多個上游的元素轉發, 需要所有上游的 Output 與 Failure 都相符


/*******Rarbles********/

-----1-----2-----3-----|
  -----6-----------8-----9-----10-----|
  
      merge
  
-----1-6---2-----3-8-----9-----10-----|
       

上一篇
30 天了解 Swift 的 Combine: [11] Operator 3.整併類型 + 4.符合篩選類型 + 5.序列篩選類型
下一篇
30 天了解 Swift 的 Combine: [13] Operator 7. 型別銜接類型 + 8. Debug 類型
系列文
30 天了解 Swift 的 Combine30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言