Facebook graph api 异步Web服务调用的调度队列
我正在调用Facebook Graph API以获取通过Facebook登录到我的应用程序的用户的电子邮件、Facebook ID和姓名 我成功地获得了信息;我现在尝试使用分派组,以便调用graph的函数在返回之前等待graph API调用完成。图形请求是异步的 我不明白为什么这个代码会被锁定 1) 创建调度组 2) 输入所述显示组 3) 一旦检索到信息或发现错误,请离开该组 4) 等待团队离开后再返回 似乎我的调度组enter调用不正确,但我不知道为什么Facebook graph api 异步Web服务调用的调度队列,facebook-graph-api,swift3,grand-central-dispatch,Facebook Graph Api,Swift3,Grand Central Dispatch,我正在调用Facebook Graph API以获取通过Facebook登录到我的应用程序的用户的电子邮件、Facebook ID和姓名 我成功地获得了信息;我现在尝试使用分派组,以便调用graph的函数在返回之前等待graph API调用完成。图形请求是异步的 我不明白为什么这个代码会被锁定 1) 创建调度组 2) 输入所述显示组 3) 一旦检索到信息或发现错误,请离开该组 4) 等待团队离开后再返回 似乎我的调度组enter调用不正确,但我不知道为什么 class func getFBInf
class func getFBInformation()->Bool {
var fbResult = false
let fbGraphGroup = DispatchGroup()
fbGraphGroup.enter()
FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "id, name, email"]).start { (connection, result, err) in
if err != nil {
fbResult = false
print("Pre Error Signal")
fbGraphGroup.leave()
return
}
if let resultDict = result as? [String:AnyObject] {
<Do things with graph results>
print("Pre success signal")
fbResult = true
fbGraphGroup.leave()
}
}
fbGraphGroup.wait()
print("Post signal")
return fbResult
}
class func getFBInformation()->Bool{
var fbResult=false
设fbGraphGroup=DispatchGroup()
fbGraphGroup.enter()
FBSDKGraphRequest(graphPath:“/me”,参数:[“字段”:“id、名称、电子邮件”])。在中启动{(连接、结果、错误)
如果错误!=零{
fbResult=false
打印(“错误前信号”)
fbGraphGroup.leave()
返回
}
如果let resultdct=结果为?[字符串:AnyObject]{
打印(“成功前信号”)
fbResult=true
fbGraphGroup.leave()
}
}
fbGraphGroup.wait()
打印(“Post信号”)
返回结果
}
它是如何工作的?
首先进入组,然后等待主线程完成处理程序,直到它离开组。但是,完成处理程序无法在主线程上执行以离开组
据我所知,您的完成处理程序是由API在主队列上调度的。不需要使用任何其他类型的同步