How to change thread using combine Publisher?

2020-04-14 10:14发布

I am using Combine and SwiftUI to do some async stuff, the point is that I don't know how to receive the response from the asynchronous operation in the main thread. The apple doc says that it can be used the RunLoop.main, but currently in Swift 5.0 it isn't a Scheduler. So any ideas about this?

I have tried to use as per apple doc, but no luck.

anyPublisher
    .receiveOn(on: RunLoop.main)

1条回答
贪生不怕死
2楼-- · 2020-04-14 10:55

Combine - at the time of writing - is not fully integrated in Foundation.

According to Xcode 11 Beta Release Notes:

The Foundation integration for the Combine framework is unavailable. The following Foundation and Grand Central Dispatch integrations with Combine are unavailable: KeyValueObserving, NotificationCenter, RunLoop, OperationQueue, Timer, URLSession, DispatchQueue, JSONEncoder, JSONDecoder, PropertyListEncoder, PropertyListDecoder, and the @Published property wrapper. (51241500)


As per the latest Xcode 11 beta (2), this has been fixed, so expect your code to work correctly.

The Foundation integration for the Combine framework is now available. The following Foundation and Grand Central Dispatch integrations with Combine are available: KeyValueObserving, NotificationCenter, RunLoop, OperationQueue, Timer, URLSession, DispatchQueue, JSONEncoder, JSONDecoder, PropertyListEncoder, PropertyListDecoder, and the @Published property wrapper. (51241500)

Thanks to @Martin R and @silicon_valley for the update.

查看更多
登录 后发表回答