Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

22.12.2023

Дев-адвент 22: async/await у Swift

Як і в JavaScript, у Swift є синтаксис async/await. Він зʼявився два роки тому - Swift молода мова, та не стримується від капітальних змін.

Async/await - одна з моїх улюблених особливостей JavaScript, та від Swift очікував чогось схожого. В базовому розумінні це дійсно одна й та сама фіча — вона надає можливість писати асинхронний код в послідовному стилі. Та як і в JavaScript, так і у Swift це робить код легшим до розуміння.

Втім, є важлива різниця. У Swift немає загально прийнятної абстракції Promise. Попереднім способом побудови асинхронного коду були колбеки. Проблема в тому, що немає способу замінити колбек на async/await - для цього потрібно переписати функцію, яку будемо викликати. Тому бібліотеки з підтримкою async/await зʼявляються тільки поступово.

Та ще й потрібно дізнатися, що альтернатива існує та знайти її. Наприклад, в Apple Health для переходу на async/await потрібно замінити HKSampleQuery на HKSampleQueryDescriptor.

Так що тепер ще більше ціную те, як JavaScript стандартизувався навколо Promise, бо вони не просто замінили колбеки, а ще й стали універсальним протоколом, який можна комбінувати як заманеться.