ReactiveX / RxSwift

Reactive Programming in Swift

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AsyncSequence.asObservable() effect is not as expected

Mx-Iris opened this issue · comments

The following code looks the same. cloneProgress returns an AsyncThrowStream, but using asObservable causes it to work on the main thread (the thread from which this code is executed).

// This will cause the code in the Task to run in the current thread (in my case, the main thread).
return AsyncSwiftGit.Repository.cloneProgress(from: remoteURL, to: localURL, credentials: credentials).asObservable()

// This works as expected, but it just pulls the asObservable code out
return .create { observer in
    let task = Task {
        do {
            for try await value in AsyncSwiftGit.Repository.cloneProgress(from: remoteURL, to: localURL, credentials: credentials) {
                observer.onNext(value)
            }
            observer.onCompleted()
        } catch {
            observer.onError(error)
        }
    }
    return Disposables.create {
        task.cancel()
    }
}

RxSwift/RxCocoa/RxBlocking/RxTest version/commit

6.6.0

Platform/Environment

  • iOS
  • macOS
  • tvOS
  • watchOS
  • playgrounds

How easy is to reproduce? (chances of successful reproduce after running the self contained code)

  • easy, 100% repro
  • sometimes, 10%-100%
  • hard, 2% - 10%
  • extremely hard, %0 - 2%

Xcode version:

  15.0.0

⚠️ Fields below are optional for general issues or in case those questions aren't related to your issue, but filling them out will increase the chances of getting your issue resolved. ⚠️

Installation method:

  • CocoaPods
  • Carthage
  • SwiftPM
  • Git submodules

I have multiple versions of Xcode installed:
(so we can know if this is a potential cause of your issue)

  • yes (which ones)
  • no

Level of RxSwift knowledge:
(this is so we can understand your level of knowledge
and formulate the response in an appropriate manner)

  • just starting
  • I have a small code base
  • I have a significant code base