ios: ¿Cómo realizo una acción después de recibir datos de dos funciones asincrónicas? Rápido

CorePress2024-01-25  8

Ejecuto 2 solicitudes http y obtengo datos de ellas de forma asincrónica. Después de recibir los datos, necesito formar una matriz basada en ellos y recargar la tabla, ¿cómo hago esto? Código:

override func viewDidLoad() {
        super.viewDidLoad()
        
        ApiManager.shared.getStocks(completion: {result in
            DispatchQueue.main.async {
                switch result {
                case .success(let stocks):
                    self.stocks = stocks
                case .failure:
                    self.stocks = []
                }
            print(self.stocks.count)
            }
        })
        ApiManager.shared.getDowJones (completion: { result in
            DispatchQueue.main.async {
                switch result {
                case .success(let dowJones):
                    self.dowJones = dowJones
                case .failure:
                    self.dowJones = []
                }
                print(self.dowJones.prefix(10))
            }
        })
    }


------------------------------------

Grupo de despacho más adecuado

   let g = DispatchGroup()
   g.enter()
    ApiManager.shared.getStocks(completion: {result in
        DispatchQueue.main.async {
            switch result {
            case .success(let stocks):
                self.stocks = stocks
            case .failure:
                self.stocks = []
            }
        g.leave()
        print(self.stocks.count)
        }
    })
   g.enter()
    ApiManager.shared.getDowJones (completion: { result in
        DispatchQueue.main.async {
            switch result {
            case .success(let dowJones):
                self.dowJones = dowJones
            case .failure:
                self.dowJones = []
            }
            g.leave()
            print(self.dowJones.prefix(10))
        }
    })

    g.notify(queue:.main) {
        // reload here
     }



------------------------------------

Puedes tomar una variable dinámica como APISuccess y luego activarla cuando obtengas el éxito de la API, ahora todo lo que necesitas hacer es vincular esa variable en tu control de vista.Oller y escribe un código en el que esté bloqueado.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare