Что такое async/await и какую проблему они решают?
Суть
async/await — встроенная в язык модель асинхронности (Swift 5.5, iOS 15). Функция, помеченная async, может приостановиться в точке await, не блокируя поток: поток возвращается в пул и выполняет другую работу, а когда результат готов, функция продолжается с того же места. Код читается линейно, ошибки идут через обычный throws/try, а компилятор проверяет, что вы не забыли ни один колбэк и не вызвали его дважды.
Проблемы, которые это решает: «пирамида» вложенных completion-handler'ов, потерянные или двойные вызовы колбэков, ручная прокидка ошибок, невозможность статически проверить потокобезопасность.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep