Общая функция расчёта маршрута подвешивает интерфейс на iOS и Android
// commonMain
suspend fun buildRoute(points: List<Point>): Route {
return optimizer.solve(points) // чистый расчёт, ~2 с для 200 точек
}
На Android вызывается из viewModelScope.launch, на iOS — через try await из SwiftUI. На обеих платформах интерфейс замирает на две секунды. Разработчик удивлён: «функция же suspend». Как исправить?
- Обернуть расчёт в withContext(Dispatchers.Default)
- Добавить delay(1) в начало функции перед расчётом
- Вызывать функцию на обеих ОС через runBlocking
- Убрать suspend и сделать функцию обычной
