网站流量 收益金融网站建设报价方案
web/
2025/10/2 3:00:47/
文章来源:
网站流量 收益,金融网站建设报价方案,如何做网站安全加固,定制手机网站之前文章介绍的Publisher都是可以连续发送数据的#xff0c;Subscriber也可以一直接收数据#xff0c;除非收到了finished或者error而结束。而JUST Publisher则不同#xff0c;它只向每个订阅者发送一次输出#xff0c;然后结束。
一起来看一下下面的代码。
class JustVi…之前文章介绍的Publisher都是可以连续发送数据的Subscriber也可以一直接收数据除非收到了finished或者error而结束。而JUST Publisher则不同它只向每个订阅者发送一次输出然后结束。
一起来看一下下面的代码。
class JustViewModel: ObservableObject {func sendMessage() {let justPublisher Just(This is a Just publisher)let cancellable justPublisher.sink { completion inprint(--- Received completion: \(completion))} receiveValue: { value inprint(--- Received value: \(value))}}
}struct JustDemo: View {StateObject private var viewModel JustViewModel()var body: some View {VStack {Button(Send Message) {viewModel.sendMessage()}.buttonStyle(BorderedProminentButtonStyle())}}
}上面的代码中在JustViewModel中添加了一个方法sendMessage在该方法里面创建了一个Just Publisher创建的时候直接传入要发送的值然后通过sink方法添加Subscriber。
当在UI上点击按钮调用这个方法的时候看一下输出 很明显点击后初始化Just发送了初始化时的值sink方法的receiveValue闭包调用了随后也调用了Completion闭包结束了这次事件流。
Just Publisher给任何一个Subscriber发送数据都只发送一次然后就调用Completion。 比如修改一下sendMessage方法添加两次Subscriber。
func sendMessage() {let justPublisher Just(This is a Just publisher)// add first subscriber_ justPublisher.sink { completion inprint(--- Received completion: \(completion))} receiveValue: { value inprint(--- Received value: \(value))}// add second subscriber_ justPublisher.sink { completion inprint(--- 2 Received completion: \(completion))} receiveValue: { value inprint(--- 2 Received value: \(value))}
}运行结果如下 两次订阅的sink方法的回调都被调用了而且每个Subscriber都只接收到一次数据然后就调用Completion闭包了。
总的来说Just Publisher还是比较简单也比较好理解的。
最后希望能够帮助到有需要的朋友如果觉得有帮助还望点个赞添加个关注笔者也会不断地努力写出更多更好用的文章。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85388.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!