阅读须知:本文重点关注这三者的基本用处和区别,对于三者的详细说明在此不做介绍,有需要的读者推荐阅读:链接: Swift Combine 入门导读
1. Publisher 用法
在最简单的情况下我们使用 Publisher 和 sink 来实现一个简单的数据流
在上面的案例中,publisher 初始化存储了一些数据,并且在被订阅后将这些数据逐个发出。这些数据发送完毕后,订阅者会收到一个完成的通知,并且这条管道会被关闭。当然,我们可以在下面再次使用 publisher.sink 订阅这些数据,这些数据会被再次逐个发送给新的订阅者。
2. PassthroughSubject 用法
想必大家看完上面的Publisher案例后都会产生疑问,因为我们在开发中大部分时间都是需要根据需要随时发布消息,而不是发布一条已经确定的数据流,我们如何实现随时插入数据呢,接下来我们就会用到 Subject。Subject 通常是一个中间代理,但是他不仅可以作为代理,还可以独立作为一个 Publisher 来发布消息。
独立作为Publisher示例代码,请仔细阅读注释理解
在上面的例子里我们使用 PassthroughSubject 初试化了一个发布者,可以使用Send发布消息,但是需要注意的是,在被订阅之前,Send的数据都是无效的,都会丢失。
作为中间代理,使用 Publisher.subscribe(_Subject)
在上面的例子里我们介绍了 publisher.subscribe(_Subject) , 其实开发中也很少用到,为了保持统一性和阅读性我们还是习惯用Subject.send来发送各种消息,和信号。
3. CurrentValueSubject
CurrentValueSubject 和 PassthroughSubject 完全类似,区别在于 CurrentValueSubject 会始终记录下之前发送的值,并在订阅后将当前的记录值发出去。
本文参考链接:
强烈推荐:
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。