Sequential upload / serielle Warteschlange mit alamofire

stimmen
0

Ich verwende Alamofireund ein seriellen , DispatchQueueum zu versuchen und ein Bild zu einem Zeitpunkt von einer Reihe von Bildern hochladen. Ich möchte einer nach dem anderen laden , damit ich einen einzigen Fortschritt HUD aktualisieren können wie jeder Upload geht. Mein Code sieht in etwa wie folgt aus :

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

Das Problem ist , dass meine uploadImage()Anrufe werden auf einmal ausgeführt wird . Ich denke , das liegt daran , dass AlamofireAnfragen asynchron ausgeführt werden. Irgendwelche Ideen auf , wie man am besten lösen das?

Veröffentlicht am 02/12/2019 um 23:56
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Alamofire läuft in seinem eigenen Hintergrund Warteschlange, so Sie können versuchen,

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

Anruf

uploadimg(images.first!)
Beantwortet am 03/12/2019 um 00:17
quelle vom benutzer

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