@@ -198,20 +198,6 @@ public class Task<Progress, Value, Error>: Cancellable, CustomStringConvertible
198198 } )
199199 }
200200
201- ///
202- /// creates rejected task with ErrorInfo
203- ///
204- /// - e.g. Task<P, V, E>(errorInfo: someErrorInfo)
205- ///
206- internal convenience init ( errorInfo: ErrorInfo )
207- {
208- self . init ( _initClosure: { machine, progress, fulfill, _reject, configure in
209- _reject ( errorInfo)
210- } )
211-
212- self . name = " RejectedTask "
213- }
214-
215201 /// internal-init for accessing `machine` inside `_initClosure`
216202 /// (NOTE: _initClosure has _RejectInfoHandler as argument)
217203 internal init ( weakified: Bool = false , paused: Bool = false , _initClosure: _InitClosure )
@@ -369,13 +355,13 @@ public class Task<Progress, Value, Error>: Cancellable, CustomStringConvertible
369355 ///
370356 /// NOTE: `oldProgress` is always nil when `weakified = true`
371357 ///
372- public func progress( progressClosure: ProgressTuple -> Void ) -> Task
358+ public func progress( progressClosure: ProgressTuple -> Void ) -> Self
373359 {
374360 var dummyCanceller : Canceller ? = nil
375361 return self . progress ( & dummyCanceller, progressClosure)
376362 }
377363
378- public func progress< C: Canceller > ( inout canceller: C ? , _ progressClosure: ProgressTuple -> Void ) -> Task
364+ public func progress< C: Canceller > ( inout canceller: C ? , _ progressClosure: ProgressTuple -> Void ) -> Self
379365 {
380366 var token : _HandlerToken ? = nil
381367 self . _machine. addProgressTupleHandler ( & token, progressClosure)
@@ -461,26 +447,6 @@ public class Task<Progress, Value, Error>: Cancellable, CustomStringConvertible
461447 }
462448 }
463449
464- ///
465- /// success (fulfilled) + closure returning nothing
466- /// used as transparent (i.e. it doesn't affect passed Task) handler.
467- ///
468- /// - e.g. task.success { value -> Void in ... }
469- ///
470- public func success( successClosure: Value -> Void ) -> Task
471- {
472- var dummyCanceller : Canceller ? = nil
473- return self . success ( & dummyCanceller, successClosure)
474- }
475-
476- public func success< C: Canceller > ( inout canceller: C ? , _ successClosure: Value -> Void ) -> Task
477- {
478- return self . success ( & canceller) { ( value: Value ) -> Task in
479- successClosure ( value)
480- return Task ( value: value)
481- }
482- }
483-
484450 ///
485451 /// success (fulfilled) + closure returning **value**
486452 ///
@@ -530,28 +496,6 @@ public class Task<Progress, Value, Error>: Cancellable, CustomStringConvertible
530496 } . name ( " \( self . name) -success " )
531497 }
532498
533- ///
534- /// failure (rejected or cancelled) + closure returning nothing
535- /// used as transparent (i.e. it doesn't affect passed Task) handler.
536- ///
537- /// - e.g. task.failure { errorInfo -> Void in ... }
538- /// - e.g. task.failure { error, isCancelled -> Void in ... }
539- ///
540-
541- public func failure( failureClosure: ErrorInfo -> Void ) -> Task
542- {
543- var dummyCanceller : Canceller ? = nil
544- return self . failure ( & dummyCanceller, failureClosure)
545- }
546-
547- public func failure< C: Canceller > ( inout canceller: C ? , _ failureClosure: ErrorInfo -> Void ) -> Task
548- {
549- return self . failure ( & canceller) { ( errorInfo: ErrorInfo ) -> Task in
550- failureClosure ( errorInfo)
551- return Task ( errorInfo: errorInfo)
552- }
553- }
554-
555499 ///
556500 /// failure (rejected or cancelled) + closure returning **value**
557501 ///
@@ -602,6 +546,23 @@ public class Task<Progress, Value, Error>: Cancellable, CustomStringConvertible
602546 } . name ( " \( self . name) -failure " )
603547 }
604548
549+ public func on( success success: Value -> Void = { _ in } , failure: ErrorInfo -> Void = { _ in } ) -> Self
550+ {
551+ let selfMachine = self . _machine
552+
553+ var dummyCanceller : Canceller ? = nil
554+ self . _then ( & dummyCanceller) {
555+ if let value = selfMachine. value. rawValue {
556+ success ( value)
557+ }
558+ else if let errorInfo = selfMachine. errorInfo. rawValue {
559+ failure ( errorInfo)
560+ }
561+ }
562+
563+ return self
564+ }
565+
605566 public func pause( ) -> Bool
606567 {
607568 return self . _machine. handlePause ( )
0 commit comments