带你读《2022技术人的百宝黑皮书》——响应式编程的复杂度和简化(5)https://developer.aliyun.com/article/1339634?groupCode=taobaotech
总结
同步是编程中的田园世界,而流式接口作为异步接口最复杂的形态,我们通过CPS变换的控制流技术,将流式接口表示为AsyncSequence,实现了对异步序列遍历的同步形式,从而将响应式编程在形式上统一回了田园世界。
上面的第一步和第二步实现了AsyncSequence和StreamFunc的相互转换,所以实际上我们证明了它们是同构的,更进一步的,我们可以证明它们与Rx、Combine也是同构的。换言之,它们是同一个概念的不同形式,理论 上它们的表达能力是等价的,这个概念就是数据流,这个概念在Rx中叫做Observable,在Combine中叫做Publisher。
在实际实现上,Rx和Combine提供了大量的操作符,因此目前它们的能力远远强于AsyncSequence和Stream- Func,比如AsyncSequence居然不支持merge。
AsyncSequence的优势是可以支持同步写法,在我看来这个优势是很大的。看到社区有过AsyncSequence替换Combine的相关的讨论,我认为逻辑上是讲得通的。
AsyncSequence替换Combine的相关讨论地址:https://forums.swift.org/t/should-asyncsequence-re- place-combine-in-the-future-or-should-they-coexist/53370)
团队介绍
我们是来自淘宝全域触达&用户互动客户端团队,负责包含Push、POP弹层和消息沟通三大触达场景。全域触达& 用户互动客户端团队追求极致的性能、流畅的交互体验和稳定的触达效率,用智能化的调控策略为用户带来更好的使用体验。