---
# System prepended metadata

title: Combine 基礎語法

---

[返回目錄](https://hackmd.io/78LEM4nRQ_uB8zOu1muVWQ)

# Combine 基礎語法

## Publisher
 ![](https://i.imgur.com/VNZTtVx.png)



## Advanced Publisher
![](https://i.imgur.com/lHqfUTL.png)

- Subject
    - PassthroughSubject
        - PassthroughSubject，不會對接收到的值進行保留，當訂閱開始後，他將監聽並響應接下來的事件。
    - CurrentValue
        - CurrentValueSubject會去包裝和持有一個值，並在設置該值時發送事件並保留新的值。在訂閱發生的瞬間，會把當前的保存值發送給訂閱值。
- Schedule
  - .delay(for: .second(2), scheduler: RunLoop.main) 延後事件
  - .debounce(for: .second(1), scheduler: RunLoop.main) 設置計時器, 事件第一次到來, 計時器啟動。 在計時器有效時間內，每次收到新值，就將計時器重置。直到沒有新的值，才會傳送最後一次事件的值




其他資源及參考
===

- [Combine基礎](https://medium.com/ios-os-x-development/learn-master-%EF%B8%8F-the-basics-of-combine-in-5-minutes-639421268219)
- [30 天了解 Swift 的 Combine: [06] More Publisher, Just, Future, Promise](https://www.hackingwithswift.com/quick-start/swiftui/how-to-wrap-a-custom-uiview-for-swiftui)
- [Combine: what are those multicast functions for?](https://forums.swift.org/t/combine-what-are-those-multicast-functions-for/26677)