异步编程:替代方案、包装器与重构工具
1. 异步替代方案
1.1 场景引入
想象这样一个场景,完成监视任务并提交报告后,我们从一个神秘国家的大使馆走下台阶,此时 Edges 的手机响了。随后我们来到常去的咖啡馆,Edges 看到新的咖啡机,打算尝试一下,而我则选择以常规方式点了一杯卡布奇诺,结果发现服务员也是用那台新机器制作的。这个场景类比到编程中,就如同我们从旧的闭包式方法过渡到新的异步方法。
1.2 代码实现
1.2.1 闭包版本方法
以下是 ClosureBasedVendor 中 selectRandomNumber 方法的闭包版本实现:
extension ClosureBasedVendor {
func selectRandomNumber(with completion:
@escaping (Int, Bool) -> Void) {
Task {
let numberBeforeChange = number
try? await Task.sleep(for: .seconds(0.5))
number = Int.random(in: 1...50)
let isGreater = number > numberBeforeChange
await MainActor.run {
completion(number,
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



