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
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