美文网首页
Combine进化之路6——Cancellable

Combine进化之路6——Cancellable

作者: valiant_xin | 来源:发表于2023-09-12 09:37 被阅读0次

Cancellable可以取消活动或者操作的协议。

public protocol Cancellable {

    /// Cancel the activity.
    /// Calling `cancel()` frees up any allocated resources. It also stops side effects such as timers, network access, or disk I/O.
    func cancel()
}

应用场景:例如但我们进行一个网络请求,或者一个需要耗时操作时,处理过程中想要中断。或者一些临时生成的资源需要在取消订阅的时候释放。

Publisher在被订阅时会给Subscriber发送一个Subscription消息,这个Subscription恰好也实现了Cancellable协议,在取消订阅时,会调用它的cancel方法。

func cancellableFunc() {
        let publisher = Future<Any, Never> { promise in
            DispatchQueue.main.asyncAfter(deadline: .now()+3) {
                promise(.success("执行成功"))
            }
        }
        
        let cancellable = publisher.sink { completion in
            print("completion: \(completion)")
        } receiveValue: { receive in
            print("receive: \(receive)")
        }
        cancellable.store(in: &subscriptions) //长久持有
            
        
        cancellable.cancel()
    }

Combine进化之路合集

相关文章

  • Combine -- Cancellable, AnyCance

    对于需要 connect 的 Publisher,在 connect 后需要保存返回的 Cancellable,并...

  • iOS 项目从 ReactiveSwift 迁移到 openCo

    为什么是 Combine? 1. 官方支持 苹果于 2019 年 6 月对外发布了 Combine 框架,至今已经...

  • Combine框架中Subscriber的Auto Cancel

    官方文档原话: AnyCancellable A type-erasing cancellable object ...

  • FutureTask

    FutureTask 1 用途 A cancellable asynchronous computation. T...

  • Job

    kotlin coroutines 1. what is Job ? cancellable life-cycle...

  • Combine最简流程源码解析

    Combine Combine是Apple出的Functional Reactive Programming (F...

  • 一些 Combine 的实际场景

    摘自《SwiftUI和Combine编程》---《SwiftUI中的Combine》 对于通过 Action 改变...

  • 进化之路

    达尔文的进化论已经创造了140余年了,但在进化论刚刚建立之初,依然引起了轩然大波。 那么为什么大都不接受呢?这就是...

  • 进化之路

    “蒿草之下,或有兰香;茅茨之屋,或有侯王。无限朱门生饿殍,几多白屋出公卿。” 看到这一句话,你想到的是谁?是...

  • 进化之路

    在过去的半年时间里,从听课、写作、阅读里,以小步快跑的形式,我尝试从被动的接受者,改变成为主动的输出者。 在这期间...

网友评论

      本文标题:Combine进化之路6——Cancellable

      本文链接:https://www.haomeiwen.com/subject/nxwevdtx.html