File tree Expand file tree Collapse file tree 2 files changed +10
-7
lines changed Expand file tree Collapse file tree 2 files changed +10
-7
lines changed Original file line number Diff line number Diff line change @@ -58,22 +58,25 @@ public extension AsyncSequence {
58
58
/// values of the asynchronous sequence's type
59
59
///
60
60
/// - returns: An `Observable` of the async sequence's type
61
- func asObservable( ) -> Observable < Element > {
61
+ func asObservable( detached : Bool = false ) -> Observable < Element > {
62
62
Observable . create { observer in
63
- let task = Task . detached {
63
+ let taskBlock = {
64
64
do {
65
65
for try await value in self {
66
66
observer. onNext ( value)
67
67
}
68
-
69
68
observer. onCompleted ( )
70
69
} catch is CancellationError {
71
70
observer. onCompleted ( )
72
71
} catch {
73
72
observer. onError ( error)
74
73
}
75
74
}
76
-
75
+
76
+ let task : Task < Void , Never > = detached
77
+ ? Task . detached ( operation: taskBlock)
78
+ : Task ( operation: taskBlock)
79
+
77
80
return Disposables . create { task. cancel ( ) }
78
81
}
79
82
}
Original file line number Diff line number Diff line change @@ -102,7 +102,7 @@ extension ObservableConcurrencyTests {
102
102
let expectation = XCTestExpectation ( description: " Observable completes " )
103
103
104
104
DispatchQueue . main. async {
105
- let observable = asyncSequence. asObservable ( )
105
+ let observable = asyncSequence. asObservable ( detached : true )
106
106
107
107
var threadIsNotMain = false
108
108
var values = [ Int] ( )
@@ -141,7 +141,7 @@ extension ObservableConcurrencyTests {
141
141
var values = [ Int] ( )
142
142
var executionThreads = Set < String > ( )
143
143
144
- _ = asyncSequence. asObservable ( ) . subscribe (
144
+ _ = asyncSequence. asObservable ( detached : true ) . subscribe (
145
145
onNext: { value in
146
146
values. append ( value)
147
147
let threadName = Thread . current. description
@@ -178,7 +178,7 @@ extension ObservableConcurrencyTests {
178
178
var threadIsNotMain = false
179
179
180
180
DispatchQueue . main. async {
181
- _ = asyncSequence. asObservable ( ) . subscribe (
181
+ _ = asyncSequence. asObservable ( detached : true ) . subscribe (
182
182
onNext: { value in
183
183
values. append ( value)
184
184
threadIsNotMain = !Thread. isMainThread
You can’t perform that action at this time.
0 commit comments