| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 移动开发 -> Combine操作符append和prepend -> 正文阅读 |
|
|
[移动开发]Combine操作符append和prepend |
|
swift标准库中有append函数,可以在数组或字符串后添加一个相同类型的数据,比如
在Combi个ine中,也可以使用append来给Publisher在后面增加一个Output,或者增加一个Publisher,同时,Combine还提供了一个prepend操作符,和append相反,他是在前面增加一个Output,或是publisher prepend Output比如我们在playground中实现如下代码
stringPublisher本身的Output是字符串“World!”,经过prepend操作符处理后,他变成了
所以sink接收时,会接收到两次数据,分别是“Hello”和“World!”。 将上面代码改成append后,会变成在后面添加Hello,就不再用代码举例了。 prepend Publisher
stringPublisher是一个字符串数组的publisher subject是Output类型为String的publisher,也可以说是subject,因为subject也是实现了publisher协议的一个类型,他有一个特殊的方法是send,可以通过send来手动发布数据。 在stringPublisher被订阅前,用prepend将subject挂接在stringPublisher的前面,这时候publisher的类型变为了 Publishers.Concatenate<PassthroughSubject<String, Never>, Publishers.Sequence<[String], Never>> Publishers.Concatenate的定义是
所以在之后的sink中,我们依次接收到了两个publisher的Output数据,也就是Run code和Break things! append操作符也是同样,只不过位置和prepend相反,一个在前,一个在后。 实际应用?在实际应用中,可以用在"拼接两个网络请求"的场景,比如我们有两个需要获取的网络数据,分别来自 http://jsonplaceholder.typicode.com/posts/1 json内容为
和?http://jsonplaceholder.typicode.com/posts/2? json内容为
我们需要同时处理两个请求的返回值时,可以使用prepend或append操作符 在playground下使用如下代码:
1、创建JSON返回的数据结构 2、创建两个请求的URL 3、创建获取第一个数据请求的publisher(函数返回值) 4、创建获取第二个数据请求的publisher(函数返回值) 5、同时处理两个数据请求,使用append(getData2())时,打印结果是
可以看出来是先处理了第一个数据请求,再处理第二个数据请求,因为append是在后面添加。 注释掉append行,将prepend行取消注释,打印结果为
先处理了第二个数据请求,再处理第一个数据请求,因为prepend是在前面添加。? 有一点要注意,prepend和append,要求被挂接的Output或publisher,与原publisher的Output类型要相同。对于我们最后一个网络请求的例子,因为两个请求返回的json数据格式是一样的,所以可以用prepend或append来实现。如果json数据格式不一样,并且还需要同时处理的话,则需要使用zip、merge或是combineLeast来实现。 |
|
|
| 移动开发 最新文章 |
| Vue3装载axios和element-ui |
| android adb cmd |
| 【xcode】Xcode常用快捷键与技巧 |
| Android开发中的线程池使用 |
| Java 和 Android 的 Base64 |
| Android 测试文字编码格式 |
| 微信小程序支付 |
| 安卓权限记录 |
| 知乎之自动养号 |
| 【Android Jetpack】DataStore |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/28 21:35:11- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |