Проблема выполнения асинхронных функций без обновления в SwiftUI ⇐ IOS
-
Гость
Проблема выполнения асинхронных функций без обновления в SwiftUI
Когда я добавляю товар в корзину, общая стоимость рассчитывается без изменения количества товара в корзине.
Вот как я добавляю товары в корзину:
@Published var carsProducts = [CartProduct]() частный пусть httpDownloader = HttpDownloader() @Published вар carsItemCount = 0 @Published вар totalAmount: Double = 0 функция getUserProducts() { httpDownloader.fetchUserProducts() { (результат) в результат переключения { случай .success(пусть корзинаПродукты): если let carsProducts = carsProducts { DispatchQueue.main.async { self.cartProducts = корзинаПродуктов } } случай .failure(пусть ошибка): print("Ошибка получения продуктов: \(ошибка)") } } } func addProductToCart (id: Int, количество: Int) { httpDownloader.addProductToCart(productId: id, количество: количество) {результат результат переключения { случай .успех: DispatchQueue.main.async { self.getUserProducts() print(self.cartProducts.first?.quantity ?? 0) self.calculateTotalPrice(продукты: self.cartProducts) } случай .failure(пусть ошибка): print("Ошибка получения продуктов: \(ошибка)") } } } Например, количество товаров в корзине в настоящее время составляет 4. Когда я добавляю товар в корзину, на экране печатается цифра 4, и цена рассчитывается соответственно. Потом, когда я отправляю запрос Почтальону, вижу, что количество товаров в корзине увеличилось до 5. Я думаю, проблема возникает из-за того, что количество товаров в корзине точно обновляется, и приложение вычисляет общую цену перед ее фиксацией.
Адрес репозитория проекта на Github: https://github.com/mehmetozkn/swiftui-c ... -store-app
Когда я добавляю товар в корзину, общая стоимость рассчитывается без изменения количества товара в корзине.
Вот как я добавляю товары в корзину:
@Published var carsProducts = [CartProduct]() частный пусть httpDownloader = HttpDownloader() @Published вар carsItemCount = 0 @Published вар totalAmount: Double = 0 функция getUserProducts() { httpDownloader.fetchUserProducts() { (результат) в результат переключения { случай .success(пусть корзинаПродукты): если let carsProducts = carsProducts { DispatchQueue.main.async { self.cartProducts = корзинаПродуктов } } случай .failure(пусть ошибка): print("Ошибка получения продуктов: \(ошибка)") } } } func addProductToCart (id: Int, количество: Int) { httpDownloader.addProductToCart(productId: id, количество: количество) {результат результат переключения { случай .успех: DispatchQueue.main.async { self.getUserProducts() print(self.cartProducts.first?.quantity ?? 0) self.calculateTotalPrice(продукты: self.cartProducts) } случай .failure(пусть ошибка): print("Ошибка получения продуктов: \(ошибка)") } } } Например, количество товаров в корзине в настоящее время составляет 4. Когда я добавляю товар в корзину, на экране печатается цифра 4, и цена рассчитывается соответственно. Потом, когда я отправляю запрос Почтальону, вижу, что количество товаров в корзине увеличилось до 5. Я думаю, проблема возникает из-за того, что количество товаров в корзине точно обновляется, и приложение вычисляет общую цену перед ее фиксацией.
Адрес репозитория проекта на Github: https://github.com/mehmetozkn/swiftui-c ... -store-app
Мобильная версия