téléchargement séquentiel / file d'attente série avec alamofire

voix
0

J'utilise Alamofireet série DispatchQueuepour essayer de télécharger une image à la fois d'un tableau d'images. Je voudrais télécharger un à la fois pour que je puisse mettre à jour un seul HUD progrès chaque téléchargement passe par. Mon code ressemble à ceci:

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
        })
    }
}

Le problème est que mes uploadImage()appels sont toutes exécutées à la fois. Je pense que c'est parce que les Alamofiredemandes sont exécutées de manière asynchrone. Toutes les idées sur la façon de mieux résoudre ce problème?

Créé 02/12/2019 à 23:56
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Alamofire coule dans sa propre file d'attente d'arrière-plan, vous pouvez essayer

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])
        }
    })
}

Appel

uploadimg(images.first!)
Créé 03/12/2019 à 00:17
source utilisateur

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