Combine 框架,从0到1 —— 4.在 Combine 中执行异步代码

 

本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 4.在 Combine 中执行异步代码

 

内容概览

  • 前言
  • Future 取代回调闭包
  • 用输出类型(Output Types)代表 Future 的参数
  • Subject 取代重复执行的闭包
  • 总结

 

前言

 

你的应用可能会使用一些常见的模式来处理异步事件,比如:

  • 完成处理器(Completion handlers)。它其实是调用方提供的一个闭包,当一个耗时任务完成后,这个闭包会被调用一次;
  • 闭包属性(Closure properties)。它其实也是调用方提供的一个闭包,这个闭包会在每一次异步事件发生时被调用;

Combine 为这些模式提供了强大的替换选项。它可以让你消除这种样板代码,并且充分利用 Combine 中的操作符。当你在应用的其他地方采用 Combine 时,将异步调用点转换为 Combine 可以提高代码的一致性和可读性。

 

Future 取代回调闭包

 

一个完成处理器其实就是一个传给某个方法的闭包参数,当这个方法完成任务时,它就会调用这个闭包。

比如下面的代码,这个函数接收一个闭包,然后在延时2秒之后执行这个闭包:

func performAsyncAction(completionHandler: @escaping () -> Void) {
   
    DispatchQueue.main.asyncAfter(deadline:.now() + 2) {
   
        completionHandler()
    }
}

你可以用 Combine 中的 Future 去替换这种模式的代码。用 Future 创建一个发布者去执行一些工作,然后异步发送成功或者失败的信号。如果执行成功,Future 就会执行一个 Future.Promise,这是一个用来接收 Future 生成的元素的闭包。

你可以像这样重写上面的代码:


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值