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

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当做参数, 传递给闭包
  • 然后当我们调用这个方法时, 该方法的闭包里面, 就会产生这个值

猜你喜欢

转载自blog.csdn.net/u012678352/article/details/54600891
今日推荐