Проблема выполнения асинхронных функций без обновления в SwiftUIIOS

Программируем под 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»