Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - Затишна Галера
Added 06 Jan 2025 🌐 UK

Затишна Галера

@Zatishna_Galera
Number of subscribers: 2 690
Photos: 1,570
Videos: 475
Links: 2,090
Description:
Голова Одеського центру розробки DataArt та Delivery Director, капітан Затишної Галери, ділитимуся: завданнями із співбесід (QA/Delivery/Management), статтями, вакансіями, новинами зі світу IT. Контакт: [email protected] ; Patreon: patreon.com/CozyGalley
Source

Затишна Галера | iOSКомпас 🧭1️⃣1️⃣5️⃣ Завдання 115Навіщо потрібен оператор future?Коман...

Telegram community logo - Затишна Галера Затишна Галера @Zatishna_Galera
500 Views/Reach 2025-08-13 08:55 Message №2085
#iOSКомпас 🧭1️⃣1️⃣5️⃣ Завдання 115Навіщо потрібен оператор future?

Команда повертаємось потрошки до роботи! Повна сил і готова роботи ще більше! Сьогодні з вами знову на зв'язку Сергій з @badlinkschannel. Продовжуємо занурюватися у глибини на нашому маленькому iOS батискафі. У мові Swift немає вбудованого оператора future, але якщо йдеться про концепцію Future з асинхронного програмування, розберімося, навіщо вона потрібна і як використовується.

🤔 Що таке Future?

Future (або Promise у деяких реалізаціях) - це об’єкт, який представляє значення, що стане доступним у майбутньому після завершення асинхронної операції. Це зручно, коли потрібно працювати з кодом, який виконується не миттєво:➖ Запити до мережі (API)➖ Зчитування файлів➖ Тривалі обчисленняУ Swift Future найчастіше використовується в рамках Combine.

🔣 Як працює Future у Swift (на прикладі Combine)?

У Combine є структура Future, яка дозволяє створити асинхронну операцію і підписатися на її результат:import Combine// Функція, що повертає Futurefunc fetchData() -> Future<String, Error> { return Future { promise in DispatchQueue.global().asyncAfter(deadline: .now() + 2) { let success = Bool.random() // Симулюємо успіх або помилку if success { promise(.success("Дані завантажено!")) } else { promise(.failure(NSError(domain: "Помилка завантаження", code: -1, userInfo: nil))) } } }}// Використання Futurelet future = fetchData()let cancellable = future.sink(receiveCompletion: { completion in switch completion { case .finished: print("Завершено без помилок") case .failure(let error): print("Помилка: \(error.localizedDescription)") }}, receiveValue: { value in print("Отримані дані: \(value)")})
#️⃣ Коли використовувати Future?➖ Коли потрібна одноразова асинхронна операція (наприклад, запит до мережі)➖ Коли використовуєш Combine і хочеш обгорнути асинхронний код у реактивний стиль➖ Якщо у майбутньому плануєш об’єднувати кілька асинхронних операцій (композиція Future)@Zatishna_Galera