Skip to content

Instantly share code, notes, and snippets.

@mattmassicotte
Created June 18, 2022 11:00
Show Gist options
  • Save mattmassicotte/f3e13d9e7721650605bc6a8c98927665 to your computer and use it in GitHub Desktop.
Save mattmassicotte/f3e13d9e7721650605bc6a8c98927665 to your computer and use it in GitHub Desktop.
Swift asyncMap function
extension Sequence {
func asyncMap<T>(_ transform: @escaping (Element) async -> T) async -> [T] {
return await withTaskGroup(of: T.self) { group in
var transformedElements = [T]()
for element in self {
group.addTask {
return await transform(element)
}
}
for await transformedElement in group {
transformedElements.append(transformedElement)
}
return transformedElements
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment