import UIKit import Alamofire enum MethodType { case get case post } class NetworkTools { class func requestData(_ type : MethodType, URLString : String, parameters : [String : Any]? = nil, finishedCallback : @escaping (_ result : Any) -> ()) { // 1.获取类型 let method = type == .get ? HTTPMethod.get : HTTPMethod.post // 2.发送网络请求 Alamofire.request(URLString, method: method, parameters: parameters).responseJSON { (response) in // 3.获取结果 guard let result = response.result.value else { print(response.result.error) return } // 4.将结果回调出去 finishedCallback(result) } } }
NetworkTools.requestData(.get, URLString: "http", parameters: ["name" : "zhangsan"]) { (result) in print(result) }
在封装网络工具类的时候, 我们传进来几个参数, 除了常用的几个值之外, 最后一个就是闭包
闭包是匿名函数, 其实也可以当做一种类型, 可以把它当做Int一样看待, 闭包在创建的过程中, 和创建其他的类型一样, name : Type
- 闭包的name: finishedCallback
- 闭包的类型: () -> ()
- 第一个括号: 形参, 第二个括号: 返回值
- 看看下面的函数, 是不是和函数有点像, 匿名函数嘛, 也就是没有名字的函数喽
在这里提一下函数, 下面是创建的一个函数,
func 函数名(形参列表) -> (返回值) { }
- 在网络工具类里面, 将result当做参数, 传递给闭包
- 然后当我们调用这个方法时, 该方法的闭包里面, 就会产生这个值
文章来源: 封装网络请求类来理解闭包