Последовательная загрузка / последовательные очереди с alamofire

голоса
0

Я использую Alamofireи последовательный , DispatchQueueчтобы попытаться загрузить одно изображение в то время из массива изображений. Я хотел бы загрузить его в то время , так что я могу обновить один прогресс HUD , поскольку каждая загрузка проходит. Мой код выглядит примерно так:

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

Проблема заключается в том, что мои uploadImage()звонки все исполнения сразу. Я думаю , что это происходит потому , что Alamofireзапросы выполняются асинхронно. Любые идеи о том, как наилучшим образом решить эту проблему?

Задан 02/12/2019 в 23:56
источник пользователем
На других языках...                            


1 ответов

голоса
1

Alamofire работает в своей собственной очереди фона, так что вы можете попробовать

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

Вызов

uploadimg(images.first!)
Ответил 03/12/2019 в 00:17
источник пользователем

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