美文网首页SwiftUI
Combine-Operator

Combine-Operator

作者: YungFan | 来源:发表于2020-04-26 11:16 被阅读0次

    默认情况下,订阅某个 Publisher,Subscriber 中的InputFailure要与 Publisher OutputFailure类型相同,但实际开发中往往是不同的,此时就需要借助Operator进行转换Operator 遵守 Publisher 协议,负责从数据流上游的 Publisher 订阅值,经过转换生成新的 Publisher 发送给下游的 Subscriber。

    Publisher,Operator 和 Subscriber 三者组成了数据流从发布,转换,到订阅的完整链条。

    简单案例

    Publisher 发布的值为Int类型的520,最后订阅以后输出String类型的值I Love You。中间通过map这个 Operator 进行转换。

    let _ = Just(520)
        .map { value -> String in
            return "I Love You"
    }
    .sink { receivedValue in
        print("最终的结果:\(receivedValue)")
    }
    
    /* 输出
    最终的结果:I Love You
    */
    

    内置Operator

    Operator 非常多,其中很多与 Swift 标准库的函数非常像,比如map, fliter等。Operator可以通过链式方式进行调用,在后面的案例中会进行讲解。下面按照功能对 Operator 进行了分类。

    • 转换
    scan
    tryScan
    setFailureType
    map
    tryMap
    flatMap
    
    • 过滤
    compactMap
    tryCompactMap
    replaceEmpty
    filter
    tryFilter
    replaceError
    removeDuplicates
    tryRemoveDuplicates
    
    • 合规
    collect
    reduce
    tryReduce
    ignoreOutput
    
    • 数学运算
    max
    tryMax
    count
    min
    tryMin
    
    • 匹配
    allSatisfy
    tryAllSatisfy
    contains
    containsWhere
    tryContainsWhere
    
    • 序列
    firstWhere
    tryFirstWhere
    first
    lastWhere
    tryLastWhere
    last
    dropWhile
    tryDropWhile
    dropUntilOutput
    prepend
    drop
    prefixUntilOutput
    prefixWhile
    tryPrefixWhile
    output
    
    • 组合
    combineLatest
    merge
    zip
    
    • 错误处理
    catch
    tryCatch
    assertNoFailure
    retry
    mapError
    
    • 调整Publisher类型
    switchToLatest
    eraseToAnyPublisher
    
    • 时间控制
    debounce
    delay
    measureInterval
    throttle
    timeout
    
    • 编解码
    encode
    decode
    
    • 多Publisher
    multicast
    
    • 调试
    breakpoint
    handleEvents
    print
    

    相关文章

      网友评论

        本文标题:Combine-Operator

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