@@ -26,9 +26,15 @@ let task = Task<Float, String, NSError> { (progress, fulfill, reject, configure)
2626 })
2727
2828 // 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+ }
3238
3339}
3440
@@ -168,9 +174,16 @@ Optionally, you can call `progress(progressValue)` multiple times before calling
168174To add ` pause ` /` resume ` /` cancel ` functionality to your ` task ` , use ` configure ` to wrap up the original one.
169175
170176``` 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+ }
174187```
175188
176189### task.progress(_ progressClosure:) -> task
@@ -215,7 +228,7 @@ This case is similar to JavaScript's `promise.then(onFulfilled)`.
215228
216229 ```swift
217230 // task will be fulfilled with value " Hello"
218- // task2 will be fulfilled with value " \() Swift"
231+ // task2 will be fulfilled with value " \(value ) Swift"
219232
220233 task.then { (value: String) -> Task<Float, String, NSError> in
221234 let task2 = ... // fulfilling " \(value) Swift"
0 commit comments