Add PromiseKit dependency
- Added PromiseKit dependency
This commit is contained in:
39
Carthage/Checkouts/PromiseKit/Sources/firstly.swift
vendored
Normal file
39
Carthage/Checkouts/PromiseKit/Sources/firstly.swift
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
import Dispatch
|
||||
|
||||
/**
|
||||
Judicious use of `firstly` *may* make chains more readable.
|
||||
|
||||
Compare:
|
||||
|
||||
URLSession.shared.dataTask(url: url1).then {
|
||||
URLSession.shared.dataTask(url: url2)
|
||||
}.then {
|
||||
URLSession.shared.dataTask(url: url3)
|
||||
}
|
||||
|
||||
With:
|
||||
|
||||
firstly {
|
||||
URLSession.shared.dataTask(url: url1)
|
||||
}.then {
|
||||
URLSession.shared.dataTask(url: url2)
|
||||
}.then {
|
||||
URLSession.shared.dataTask(url: url3)
|
||||
}
|
||||
|
||||
- Note: the block you pass excecutes immediately on the current thread/queue.
|
||||
*/
|
||||
public func firstly<U: Thenable>(execute body: () throws -> U) -> Promise<U.T> {
|
||||
do {
|
||||
let rp = Promise<U.T>(.pending)
|
||||
try body().pipe(to: rp.box.seal)
|
||||
return rp
|
||||
} catch {
|
||||
return Promise(error: error)
|
||||
}
|
||||
}
|
||||
|
||||
/// - See: firstly()
|
||||
public func firstly<T>(execute body: () -> Guarantee<T>) -> Guarantee<T> {
|
||||
return body()
|
||||
}
|
Reference in New Issue
Block a user