Я пытаюсь реализовать вложенный запрос Alamofire: - Первый запрос вызывает код - Второй запрос вызывает результат, используя код, полученный в первом запросе.
Кроме того, я предполагаю, что есть проблема с объектом DispatchQueue, я думал использовать DispatchQueue.main.async для второго запроса, но здесь это не принято.
В строках ниже второй запрос возвращает мне нулевой результат, потому что он не включает код, найденный в первом запросе.
func fetch(jan: String) {
AF.request("https://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?appid=\(appId)&jan=\(jan)&hits=50").responseDecodable(of: Welcome.self , queue: DispatchQueue.main) { response in
let boncode1 = String("\(response.value?.resultSet.the0.result.the0?.code)")
print(boncode1)
AF.request("https://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemLookup?appid=\(self.appId)&itemcode=\(boncode1)").responseDecodable(of: troisViewController.Welcome.self , queue: DispatchQueue.main) { response in
print("\(response.value?.resultSet.the0.result.the0?.name ?? "is nil" )")
}
}
}
Надеюсь, кто-то уже сталкивался с подобной проблемой,
заранее спасибо
queue:
получает объект DispatchQueue, тогда какDispatchQueue.main.async
— это метод, который ничего не возвращает. Обработчик завершения всегда возвращается асинхронно, поэтому я не думаю, что вам следует беспокоиться об этом. Что вы можете сделать, так это создать собственную очередь DispatchQueue и передать ее вместо DispatchQueue.main. то есть:DispatchQueue(label: "com.your-domain.request-thread", qos: .utility)
- person Greg de J   schedule 24.03.2020boncode1
значение, которое вы ожидаете? Вроде правильно интерполировал во 2-м запросе. - person Greg de J   schedule 24.03.2020