@@ -26,9 +26,15 @@ let task = Task<Float, String, NSError> { (progress, fulfill, reject, configure)
26
26
})
27
27
28
28
// pause/resume/cancel configuration (optional)
29
- configure.pause = { player.pause () }
30
- configure.resume = { player.resume () }
31
- configure.cancel = { player.cancel () }
29
+ configure.pause = { [weak player] in
30
+ if let p = player { p.pause () }
31
+ }
32
+ configure.resume = { [weak player] in
33
+ if let p = player { p.resume () }
34
+ }
35
+ configure.cancel = { [weak player] in
36
+ if let p = player { p.cancel () }
37
+ }
32
38
33
39
}
34
40
@@ -168,9 +174,16 @@ Optionally, you can call `progress(progressValue)` multiple times before calling
168
174
To add ` pause ` /` resume ` /` cancel ` functionality to your ` task ` , use ` configure ` to wrap up the original one.
169
175
170
176
``` swift
171
- configure.pause = { player.pause () }
172
- configure.resume = { player.resume () }
173
- configure.cancel = { player.cancel () }
177
+ // NOTE: use weak to let task NOT CAPTURE player via configure
178
+ configure.pause = { [weak player] in
179
+ if let p = player { p.pause () }
180
+ }
181
+ configure.resume = { [weak player] in
182
+ if let p = player { p.resume () }
183
+ }
184
+ configure.cancel = { [weak player] in
185
+ if let p = player { p.cancel () }
186
+ }
174
187
```
175
188
176
189
### task.progress(_ progressClosure:) -> task
@@ -215,7 +228,7 @@ This case is similar to JavaScript's `promise.then(onFulfilled)`.
215
228
216
229
```swift
217
230
// task will be fulfilled with value " Hello"
218
- // task2 will be fulfilled with value " \() Swift"
231
+ // task2 will be fulfilled with value " \(value ) Swift"
219
232
220
233
task.then { (value: String) -> Task<Float, String, NSError> in
221
234
let task2 = ... // fulfilling " \(value) Swift"
0 commit comments