在函数返回之前等待后台线程完成

时间:2016-08-13 18:55:12

标签: swift function reachability background-thread

我尝试创建将Internet状态恢复为Bool的函数:

func isConnectedToNetwork()->Bool{
    var InternetStatus = Bool()
    RealReachability.sharedInstance().reachabilityWithBlock { (status:ReachabilityStatus) in
        switch status {
        case .RealStatusNotReachable:
            InternetStatus = false
        default:
            InternetStatus = true

        }
    }
   return InternetStatus
}

但我有一个问题,RealReachability.sharedInstance().reachabilityWithBlock {}在后​​台线程中工作,函数在后台线程完成之前返回。

如何在函数返回之前等待后台线程结果?

1 个答案:

答案 0 :(得分:3)

不要等,告诉你。

使用在异步任务完成时调用的完成处理程序

func isConnectedToNetwork(completion:(Bool -> Void)) {
    RealReachability.sharedInstance().reachabilityWithBlock { (status:ReachabilityStatus) in
        switch status {
        case .RealStatusNotReachable:
            completion(false)
        default:
            completion(true)
        }
    }
}

并将其命名为

isConnectedToNetwork { success in
  print(success)
  // do something with the success value
}