Swift 需要了解如何使用多级函数调用处理完成处理程序的帮助吗

Swift 需要了解如何使用多级函数调用处理完成处理程序的帮助吗,swift,asynchronous,alamofire,Swift,Asynchronous,Alamofire,我正在寻找一些帮助处理我的代码。我使用阿拉莫菲尔去获取和发布。因为它们是异步运行的,所以我需要使用完成处理程序,这样我就可以将JSON数据保存到一个变量中,以后再使用它 我的代码如下,但我认为解释可能会让事情更清楚。 函数x()需要JSON数据,并首先调用函数y()。函数y()然后调用getRequest函数来实际执行GET。我认为getRequest完成处理程序设置正确。它的设置使y()可以拥有自己的完成处理程序代码。我现在被困在如何将JSON数据输出到原始函数x()中 我是否必须在函数y()

我正在寻找一些帮助处理我的代码。我使用阿拉莫菲尔去获取和发布。因为它们是异步运行的,所以我需要使用完成处理程序,这样我就可以将JSON数据保存到一个变量中,以后再使用它

我的代码如下,但我认为解释可能会让事情更清楚。 函数x()需要JSON数据,并首先调用函数y()。函数y()然后调用getRequest函数来实际执行GET。我认为getRequest完成处理程序设置正确。它的设置使y()可以拥有自己的完成处理程序代码。我现在被困在如何将JSON数据输出到原始函数x()中

我是否必须在函数y()中执行另一个
completion:@escaping(JSON?->Void)
completion(response)
,然后在所有调用y的函数中添加完成代码,或者是否有方法可以导出JSON数据以便在函数x()中使用它


一旦函数使用异步函数,它也会变得异步,因为它不能同步返回数据,所以它也需要有自己的完成处理程序

因此,
y
应定义如下:

func y(completion: @escaping (JSON) -> Void) {
   // ...
   getRequest(url: url) { value in
      print(value) // or do something else with value
      completion(value) // return data via callback
   }
}
x相同
-需要完成一些操作才能返回数据或发出完成的信号:

func x(token: String, completion: @escaping () -> Void) {

   // ...
   y() { json in
      print(json)
      completion() // or return something via callback
   }
}

函数x()只能在函数y()返回完成后运行。当AF传递数据集时,函数y()必须返回completion。我觉得我必须这样做。你完全正确。谢谢你的帮助。
func x(token: String, completion: @escaping () -> Void) {

   // ...
   y() { json in
      print(json)
      completion() // or return something via callback
   }
}