当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Optional.Publisher receive(on:options:)用法及代码示例


实例方法

receive(on:options:)

指定从发布者接收元素的调度程序。

声明

func receive<S>(
    on scheduler: S,
    options: S.SchedulerOptions? = nil
) -> Publishers.ReceiveOn<Self, S> where S : Scheduler

返回值

使用指定调度程序交付元素的发布者。

参数

scheduler

发布者用于元素传递的调度程序。

options

用于自定义元素交付的调度程序选项。

详述

您使用Publisher/receive(on:options:) 运算符接收特定调度程序的结果和完成,例如在主运行循环上执行 UI 工作。与影响上游消息的 Publisher/subscribe(on:options:) 相比,Publisher/receive(on:options:) 改变下游消息的执行上下文。

在以下示例中,Publisher/subscribe(on:options:) 运算符导致 jsonPublisherbackgroundQueue 上接收请求,而 Publisher/receive(on:options:) 导致 labelUpdaterRunLoop.main 上接收元素和完成。


let jsonPublisher = MyJSONLoaderPublisher() // Some publisher.
let labelUpdater = MyLabelUpdateSubscriber() // Some subscriber that updates the UI.


jsonPublisher
    .subscribe(on: backgroundQueue)
    .receive(on: RunLoop.main)
    .subscribe(labelUpdater)

在订阅者中执行工作时,优先使用 Publisher/receive(on:options:) 而不是显式使用调度队列。例如,而不是以下模式:


pub.sink {
    DispatchQueue.main.async {
        // Do something.
    }
}

请改用此模式:


pub.receive(on: DispatchQueue.main).sink {
    // Do something.
}

可用版本

iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Optional.Publisher receive(on:options:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。