Skip to content

Instantly share code, notes, and snippets.

@malcommac
Created February 4, 2017 11:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save malcommac/f85480fd868b6bb93941b77571898c66 to your computer and use it in GitHub Desktop.
Save malcommac/f85480fd868b6bb93941b77571898c66 to your computer and use it in GitHub Desktop.
Hydra_Internals_11.swift
internal func map_parallel<A, B, S: Sequence>(context: Context, items: S, transform: @escaping (A) throws -> Promise<B>) -> Promise<[B]> where S.Iterator.Element == A {
let transformPromise = Promise<Void>(resolved: ())
return transformPromise.then(in: context) { (Void) -> Promise<[B]> in
do {
let mappedPromises: [Promise<B>] = try items.map({ item in
return try transform(item)
})
return all(mappedPromises)
} catch let error {
return Promise<[B]>(rejected: error)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment