Обработчик завершения быстрого вызова из второй функции

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