Sequencial de carregamento / fila de série com alamofire

votos
0

Eu estou usando Alamofiree uma série DispatchQueuepara tentar fazer upload de uma imagem de cada vez a partir de uma matriz de imagens. Gostaria de fazer upload de um de cada vez para que eu possa atualizar um único progresso HUD como cada carregamento atravessa. Meu código é algo como isto:

let serialQueue = DispatchQueue(label: project.serialQueue)
for image in images {
    serialQueue.async {
        uploadImage(image: image, progress: { progress in 
            //update progress HUD
        }, completion: { json, error in 
            //dismiss HUD
        })
    }
}

O problema é que as minhas uploadImage()chamadas são todos executando ao mesmo tempo. Eu acho que isso é porque Alamofireas solicitações são executadas de forma assíncrona. Todas as ideias sobre a melhor forma de resolver isso?

Publicado 02/12/2019 em 23:56
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Alamofire é executado em sua própria fila de fundo, assim você pode tentar

var counter = 0
func uploadImg(_ img:UIImage) {
    uploadImage(image: img, progress: { progress in 
        //update progress HUD
    }, completion: { json, error in 
        //dismiss HUD
        self.counter += 1
        if self.counter < images.count {
           self.uploadImg(images[counter])
        }
    })
}

Ligar

uploadimg(images.first!)
Respondeu 03/12/2019 em 00:17
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more