Я использую мойю для загрузки многих изображений с помощью OperationQueue для управления maxConcurrentOperationCount. Предположим, у меня есть 100 изображений, загружая 5 изображений каждый раз. Тайм-аут Alamorefire устанавливается на 10 секунд.
Загрузка одного изображения происходит очень быстро, тайм-аут запускается. Но когда я загружаю 100 изображений, используя метод ниже, даже используя многопоточность, это вызывает тайм-аут. Почему? Спасибо!
queue = OperationQueue()
queue.maxConcurrentOperationCount = 5
var i = 0
for image in photos {
autoreleasepool {
let operation:BlockOperation = BlockOperation(block: {
[weak self] in
guard let strongSelf = self else {return}
print("hyl cur thread %@", Thread.current)
strongSelf.uploadImage(image)
return
})
i += 1
queue.addOperation(operation)
}
}
private func uploadImage(_ image: UIImage) {
AladdinProvider.rx.request(.upload(access_token: UserInfo.instance.access_token!, file_name: "file_name", data: image)).asObservable().mapJSON().mapObject(type: AlbumDatas.self).subscribe(onNext: {
[weak self] result in
guard let strongSelf = self else {return}
// TODO success
}, onError: {
error in
print(\(error))
}).disposed(by: disposeBag)
}