用于在 Swift 集合上运行异步进程的函数
在 Sequence(序列)的每个元素上运行一个异步函数。
await array.asyncForEach {
await asyncProcess($0)
}
这些异步闭包是串行运行的,即必须先完成对序列当前元素运行的闭包,然后才能对下一个元素运行闭包。
要并发运行闭包,请使用
try await array.concurrentForEach {
try await asyncProcess($0)
}
您可以使用 maxConcurrentTasks
参数来管理一次运行的任务数量。
try await array.concurrentForEach(maxConcurrentTasks: 4) {
try await asyncProcess($0)
}
返回一个通过异步函数转换后的数组。
let result = await array.asyncMap {
return await asyncTransform($0)
}
与 asyncForEach
类似,asyncMap
也有并发运行转换的版本。
let result = await array.concurrentMap(maxConcurrentTasks: 8) {
return await asyncTransform($0)
}
返回一个非可选数组,该数组通过一个异步函数转换,该函数返回可选结果。
let result: [MyType] = await array.asyncCompactMap { value -> MyType? in
return await asyncTransform(value)
}
与 asyncForEach
类似,asyncCompactMap
也有并发运行转换的版本。
let result: [MyType] = await array.concurrentCompactMap(maxConcurrentTasks: 8) { value -> MyType? in
return await asyncTransform(value)
返回一个连接的数组,该数组通过一个返回序列的异步函数转换。
let result: [MySequence.Element] = await array.asyncMap { value -> MySequence in
return await asyncTransform($0)
}
与 asyncForEach
类似,asyncFlatMap
也有并发运行转换的版本。
let result: [MySequence.Element] = await array.concurrentMap(maxConcurrentTasks: 8) { value -> MySequence in
return await asyncTransform($0)
}
返回一个通过异步函数转换后的过滤数组。
let result = await array.asyncFilter {
return await asyncTransform($0)
}
与 asyncForEach
类似,asyncFilter
也有并发运行转换的版本。
let result = await array.concurrentFilter(maxConcurrentTasks: 8) {
return await asyncTransform($0)
}