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

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

@Zatishna_Galera
Number of subscribers: 2 704
Photos: 1,360
Videos: 432
Links: 1,830
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