通过添加类似于Promises
的All
、Any
、Await
、Race
操作符来改进 Combine
所有新增操作符都是线程安全的
Swift Package Manager
.package(url: "https://github.com/CodeEagle/CombineEx.git", from: "1.0.0")
请记住将 AnyCancelabel
保存在你自己的作用域内
// same type
let token = all(publisher...)
let token = all([publisher])
// different type
let token = all(a, b)
// up to four different pulisher
let token = all(a, b, c, d)
// same type
let token = any(publisher...)
let token = any([publisher])
// different type
let token = any(a, b)
// up to four different pulisher
let token = any(a, b, c, d)
_ = try publisher.await()
// only support same type racing
let token = race(publisher...)
let token = race([publisher])