#swift #api #asynchronous #alamofire #completionhandler
#быстрый #API #асинхронный #аламофайр #обработчик завершения
Вопрос:
спасибо, что прочитали это, я надеюсь, вы сможете понять мою проблему. В принципе, то, что я хотел бы сделать, это:
private func doGet(path:String, body:Dictionary, completion: @escaping (JSON?, Bool) -> Void) {
completion(data, bool)
}
func getData(body){
return doGet("/api/data", body: body)
}
// The function gets called in another class
getData(data){ (data, bool)
// do something with data
}
Я знаю, что этот код не работает, но это то, что я хотел бы сделать. Я не хочу вызывать doGet из другого класса, я хочу, чтобы между ними была функция. Возможно, это невозможно. Пожалуйста, дайте мне знать, если я недостаточно ясно выразился, и заранее спасибо. 🙂
Ответ №1:
getData
также необходимо иметь параметр обработчика завершения, поскольку он тоже возвращает результаты асинхронно.
Итак, у вас будет что-то вроде этого:
getData(body: SomeType, completion: @escaping (Data, Bool) -> Void) {
doGet(path: "/api/data", body: body) { (param1, param2) in
// turns param1 and param2 into parameters to invoke
// the completion handler with
completion(data, true)
}
}