Стендап Сьогодні 📢 Канал в 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, бо вони не просто замінили колбеки, а ще й стали універсальним протоколом, який можна комбінувати як заманеться.