Prześlij sekwencyjne / seryjny kolejka z alamofire

głosy
0

Używam Alamofirei szeregowy DispatchQueue, aby spróbować przesłać jedno zdjęcie na raz z tablicą obrazów. Chciałbym przesłać po jednym na raz, więc mogę zaktualizować pojedynczy postępu HUD jak każdy przesyłanie przechodzi. Mój kod wygląda mniej więcej tak:

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

Problemem jest to, że moje uploadImage()rozmowy są wszyscy wykonujący jednocześnie. Myślę, że to dlatego, że Alamofireżądania są uruchamiane asynchronicznie. Wszelkie pomysły, w jaki sposób rozwiązać ten problem?

Utwórz 02/12/2019 o 23:56
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Alamofire działa we własnym kolejce w tle, więc można spróbować

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

Połączenie

uploadimg(images.first!)
Odpowiedział 03/12/2019 o 00:17
źródło użytkownik

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