當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Swift Result.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大神的英文原創作品 Result.Publisher receive(on:options:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。