PromiseK provides a simple monadic Promise type for Swift.
// `flatMap` is equivalent to `then` of JavaScript's `Promise`
let a: Promise<Int> = asyncGet(2)
let b: Promise<Int> = asyncGet(3).map { $0 * $0 } // Promise(9)
let sum: Promise<Int> = a.flatMap { a in b.map { b in a + b } }
Promise can collaborate with throws for failable asynchronous operations.
// Collaborates with `throws` for error handling
let a: Promise<() throws -> Int> = asyncFailable(2)
let b: Promise<() throws -> Int> = asyncFailable(3).map { try $0() * $0() }
let sum: Promise<() throws -> Int> = a.flatMap { a in b.map { b in try a() * b() } }
It is also possible to recover from errors.
// Recovery from errors
let recovered: Promise<Int> = asyncFailable(42).map { value in
do {
return try value()
} catch _ {
return -1
}
}
PromiseK
PromiseK provides a simple monadic
Promise
type for Swift.Promise
can collaborate withthrows
for failable asynchronous operations.It is also possible to recover from errors.
Installation
Swift Package Manager
Carthage
License
The MIT License
References