В моем проекте Swift 5 у меня есть это расширение для передачи функции async
в Publisher.map
:
Однако я не могу скомпилировать это в Xcode 16.1 beta с использованием Swift 6, получая "Task-isolated value of type '() async -> ()' passed as a strong passed parameter; later accesses could race". Можно ли как-то перенести это расширение в Swift 6? Уже пробовал добавлять Sendable
и @Sendable
везде.
import Combine
public extension Publisher {
func asyncMap<T>(
_ asyncFunc: @escaping (Output) async -> T
) -> Publishers.FlatMap<Future<T, Never>, Self> {
flatMap { value in
Future { promise in
Task {
let result = await asyncFunc(value)
promise(.success(result))
}
}
}
}
}
Анжелика
Вопрос задан16 января 2024 г.