Skip to content

Commit b4b6eec

Browse files
committed
Improve adding progress/completionHandlers only when necessary.
1 parent 9a64566 commit b4b6eec

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

SwiftTask/_StateMachine.swift

+8-4
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ internal class _StateMachine<Progress, Value, Error>
3030
/// and will be set to `nil` afterward
3131
internal var initResumeClosure: (Void -> Void)?
3232

33-
internal private(set) var progressTupleHandlers: [ProgressTupleHandler] = []
34-
internal private(set) var completionHandlers: [Void -> Void] = []
33+
internal private(set) lazy var progressTupleHandlers: [ProgressTupleHandler] = []
34+
internal private(set) lazy var completionHandlers: [Void -> Void] = []
3535

3636
internal let configuration = TaskConfiguration()
3737

@@ -43,12 +43,16 @@ internal class _StateMachine<Progress, Value, Error>
4343

4444
internal func addProgressTupleHandler(progressTupleHandler: ProgressTupleHandler)
4545
{
46-
self.progressTupleHandlers.append(progressTupleHandler)
46+
if self.state == .Running || self.state == .Paused {
47+
self.progressTupleHandlers.append(progressTupleHandler)
48+
}
4749
}
4850

4951
internal func addCompletionHandler(completionHandler: Void -> Void)
5052
{
51-
self.completionHandlers.append(completionHandler)
53+
if self.state == .Running || self.state == .Paused {
54+
self.completionHandlers.append(completionHandler)
55+
}
5256
}
5357

5458
internal func handleProgress(progress: Progress)

0 commit comments

Comments
 (0)