Swift 2 For Loop с асинхронным сетевым запросом продолжает цикл после ответа - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь отправить тысячи http-запросов, но мое приложение падает из-за проблемы с памятью. "прекращено из-за проблемы с памятью" .Поэтому я хотел дождаться ответа, прежде чем продолжить цикл, чтобы отправить еще один запрос.

for i in 0 ..< 10000 {

    Alamofire.request("https://httpbin.org/get", parameters: ["foo": "bar"]).responseJSON { response in
        print("Finished request \(i)")
        // Continue the looping
    }
}

1 Ответ

0 голосов
/ 23 сентября 2018

Вы можете выполнить простую рекурсию, как показано ниже.

func makeRequest(for index: Int) {
    guard index < 10000 else { return }
    Alamofire.request("https://httpbin.org/get", parameters: ["foo": "bar"]).responseJSON { [weak self] response in
        print("Finished request \(index)")
        self?.makeRequest(for: index + 1)
    }
}

, а затем начать с нуля или любого другого индекса, как показано ниже,

self.makeRequest(for: 0)
...