-
catch(on:Extension methodpolicy: _: ) The provided closure executes when this promise rejects.
Rejecting a promise cascades: rejecting all subsequent promises (unless recover is invoked) thus you will typically place your catch at the end of a chain. Often utility promises will not have a catch, instead delegating the error handling to the caller.
See also
CancellationDeclaration
Swift
@discardableResult func `catch`(on: Dispatcher = conf.D.return, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping (Error) -> Void) -> PMKFinalizerParameters
onThe dispatcher that executes the provided closure.
policyThe default policy does not execute your handler for cancellation errors.
bodyThe handler to execute if this promise is rejected.
Return Value
A promise finalizer.
-
catch(only:Extension methodon: _: ) The provided closure executes when this promise rejects with the specific error passed in. A final
catchis still required at the end of the chain.Rejecting a promise cascades: rejecting all subsequent promises (unless recover is invoked) thus you will typically place your catch at the end of a chain. Often utility promises will not have a catch, instead delegating the error handling to the caller.
Note
Since this method handles only specific errors, supplying aCatchPolicyis unsupported.See also
CancellationDeclaration
Swift
func `catch`<E>(only: E, on: Dispatcher = conf.D.return, _ body: @escaping (E) -> Void) -> PMKCascadingFinalizer where E : Equatable, E : ErrorParameters
onlyThe specific error to be caught and handled (e.g.,
PMKError.emptySequence).onThe dispatcher that executes the provided closure.
bodyThe handler to execute if this promise is rejected with the provided error.
Return Value
A promise finalizer that accepts additional
catchclauses. -
catch(only:Extension methodon: policy: _: ) The provided closure executes when this promise rejects with an error of the type passed in. A final
catchis still required at the end of the chain.Rejecting a promise cascades: rejecting all subsequent promises (unless recover is invoked) thus you will typically place your catch at the end of a chain. Often utility promises will not have a catch, instead delegating the error handling to the caller.
See also
CancellationDeclaration
Swift
func `catch`<E>(only: E.Type, on: Dispatcher = conf.D.return, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping (E) -> Void) -> PMKCascadingFinalizer where E : ErrorParameters
onlyThe error type to be caught and handled (e.g.,
PMKError).onThe dispatcher that executes the provided closure.
policyA
CatchPolicythat further constrains the errors this handler will see. E.g., if you are receivingPMKErrorerrors, do you want to see even those that result from cancellation?bodyThe handler to execute if this promise is rejected with the provided error type.
Return Value
A promise finalizer that accepts additional
catchclauses. -
recover(on:Extension methodpolicy: _: ) The provided closure executes when this promise rejects.
Unlike
catch,recovercontinues the chain. It can return a replacement promise or rethrow. Userecoverin circumstances where recovering the chain from certain errors is a possibility. For example:firstly { CLLocationManager.requestLocation() }.recover { error in guard error == CLError.unknownLocation else { throw error } return .value(CLLocation.chicago) }See also
CancellationDeclaration
Swift
func recover<U>(on: Dispatcher = conf.D.map, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping (Error) throws -> U) -> Promise<T> where U : Thenable, Self.T == U.TParameters
onThe dispatcher that executes the provided closure.
policyThe default policy does not execute your handler for cancellation errors.
bodyThe handler to execute if this promise is rejected.
-
recover(only:Extension methodon: _: ) The provided closure executes when this promise rejects with the specific error passed in.
Unlike
catch,recovercontinues the chain. It can return a replacement promise or rethrow. Userecoverin circumstances where recovering the chain from certain errors is a possibility. For example:firstly { CLLocationManager.requestLocation() }.recover(CLError.unknownLocation) { return .value(CLLocation.chicago) }Note
Since this method recovers only specific errors, supplying aCatchPolicyis unsupported.See also
CancellationDeclaration
Swift
func recover<U, E>(only: E, on: Dispatcher = conf.D.map, _ body: @escaping (E) throws -> U) -> Promise<T> where U : Thenable, E : Equatable, E : Error, Self.T == U.TParameters
onlyThe specific error to be recovered (e.g.,
PMKError.emptySequence)onThe dispatcher that executes the provided closure.
bodyThe handler to execute if this promise is rejected with the provided error.
-
recover(only:Extension methodon: policy: _: ) The provided closure executes when this promise rejects with an error of the type passed in.
Unlike
catch,recovercontinues the chain. It can return a replacement promise or rethrow. Userecoverin circumstances where recovering the chain from certain errors is a possibility. For example:firstly { API.fetchData() }.recover(FetchError.self) { error in guard case .missingImage(let partialData) = error else { throw error } //… return .value(dataWithDefaultImage) }See also
CancellationDeclaration
Swift
func recover<U, E>(only: E.Type, on: Dispatcher = conf.D.map, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping (E) throws -> U) -> Promise<T> where U : Thenable, E : Error, Self.T == U.TParameters
onlyThe error type to be recovered (e.g.,
PMKError).onThe dispatcher that executes the provided closure.
policyThe default policy does not execute your handler for cancellation errors.
bodyThe handler to execute if this promise is rejected with the provided error type.
-
recover(on:Extension method_: ) The provided closure executes when this promise rejects. This variant of
recoverrequires the handler to return a Guarantee; your closure cannotthrow.It is logically impossible for this variant to accept a
catchPolicy. All errors will be presented to your closure for processing.See also
CancellationDeclaration
Swift
@discardableResult func recover(on: Dispatcher = conf.D.map, _ body: @escaping (Error) -> Guarantee<T>) -> Guarantee<T>Parameters
onThe dispatcher that executes the provided closure.
bodyThe handler to execute if this promise is rejected.
-
ensure(on:Extension method_: ) The provided closure executes when this promise resolves, whether it rejects or not.
firstly { UIApplication.shared.networkActivityIndicatorVisible = true }.done { //… }.ensure { UIApplication.shared.networkActivityIndicatorVisible = false }.catch { //… }Declaration
Swift
func ensure(on: Dispatcher = conf.D.return, _ body: @escaping () -> Void) -> Promise<T>Parameters
onThe dispatcher that executes the provided closure.
bodyThe closure that executes when this promise resolves.
Return Value
A new promise, resolved with this promise’s resolution.
-
ensureThen(on:Extension method_: ) The provided closure executes when this promise resolves, whether it rejects or not. The chain waits on the returned
Guarantee<Void>.firstly { setup() }.done { //… }.ensureThen { teardown() // -> Guarante<Void> }.catch { //… }Declaration
Swift
func ensureThen(on: Dispatcher = conf.D.return, _ body: @escaping () -> Guarantee<Void>) -> Promise<T>Parameters
onThe dispatcher that executes the provided closure.
bodyThe closure that executes when this promise resolves.
Return Value
A new promise, resolved with this promise’s resolution.
-
cauterize()Extension methodConsumes the Swift unused-result warning.
Note
You shouldcatch, but in situations where you know you don’t need acatch,cauterizemakes your intentions clear.Declaration
Swift
@discardableResult func cauterize() -> PMKFinalizer -
recover(on:Extension methodflags: _: ) The provided closure executes when this promise rejects. This variant of
recoverrequires the handler to return a Guarantee; your closure cannotthrow.It is logically impossible for this variant to accept a
catchPolicy. All errors will be presented to your closure for processing.See also
CancellationDeclaration
Parameters
onThe queue to which the provided closure dispatches.
flagsDispatchWorkItemFlagsto be applied when dispatching.bodyThe handler to execute if this promise is rejected.
-
recover(on:Extension method_: ) The provided closure executes when this promise rejects.
This variant of
recoveris specialized forVoidpromises and de-errors your chain, returning aGuarantee. Thus, you cannotthrowand you must handle all error types, including cancellation.See also
CancellationDeclaration
Swift
@discardableResult func recover(on: Dispatcher = conf.D.map, _ body: @escaping (Error) -> Void) -> Guarantee<Void>Parameters
onThe dispatcher that executes the provided closure.
bodyThe handler to execute if this promise is rejected.
-
recover(on:Extension methodpolicy: _: ) The provided closure executes when this promise rejects.
This variant of
recoverensures that no error is thrown from the handler and allows you to specify a catch policy.See also
CancellationDeclaration
Swift
func recover(on: Dispatcher = conf.D.map, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping (Error) throws -> Void) -> Promise<Void>Parameters
onThe dispatcher that executes the provided closure.
bodyThe handler to execute if this promise is rejected.
-
recover(only:Extension methodon: _: ) The provided closure executes when this promise rejects with the specific error passed in.
Unlike
catch,recovercontinues the chain. It can return a replacement promise or rethrow. Userecoverin circumstances where recovering the chain from certain errors is a possibility.Note
Since this method recovers only specific errors, supplying aCatchPolicyis unsupported.See also
CancellationDeclaration
Swift
func recover<E>(only: E, on: Dispatcher = conf.D.map, _ body: @escaping (E) throws -> Void) -> Promise<Void> where E : Equatable, E : ErrorParameters
onlyThe specific error to be recovered (e.g.,
PMKError.emptySequence)onThe dispatcher that executes the provided closure.
bodyThe handler to execute if this promise is rejected with the provided error.
-
recover(only:Extension methodon: policy: _: ) The provided closure executes when this promise rejects with an error of the type passed in.
Unlike
catch,recovercontinues the chain. It can return a replacement promise or rethrow. Userecoverin circumstances where recovering the chain from certain errors is a possibility.See also
CancellationDeclaration
Swift
func recover<E>(only: E.Type, on: Dispatcher = conf.D.map, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping (E) throws -> Void) -> Promise<Void> where E : ErrorParameters
onlyThe error type to be recovered (e.g.,
PMKError).onThe dispatcher that executes the provided closure.
policyThe default policy does not execute your handler for cancellation errors.
bodyThe handler to execute if this promise is rejected with the provided error type.
-
recover(on:Extension methodflags: _: ) The provided closure executes when this promise rejects.
This variant of
recoveris specialized forVoidpromises and de-errors your chain, returning aGuarantee. Thus, you cannotthrowand you must handle all error types, including cancellation.See also
CancellationDeclaration
Swift
@discardableResult func recover(on: DispatchQueue? = .pmkDefault, flags: DispatchWorkItemFlags? = nil, _ body: @escaping (Error) -> Void) -> Guarantee<Void>Parameters
onThe queue to which the provided closure dispatches.
flagsDispatchWorkItemFlagsto be applied when dispatching.bodyThe handler to execute if this promise is rejected.
View on GitHub
CatchMixin Protocol Reference