封装网络请求类来理解闭包

匿名 (未验证) 提交于 2019-12-03 00:27:02
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当做参数, 传递给闭包
  • 然后当我们调用这个方法时, 该方法的闭包里面, 就会产生这个值
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!