等待函数完成处理程序完成失败
Posted
技术标签:
【中文标题】等待函数完成处理程序完成失败【英文标题】:waiting for a function to finish with completion handler fails 【发布时间】:2016-12-08 15:42:06 【问题描述】:我正在尝试等待异步函数完成,然后再处理它的数据(例如,将其保存到我的数据库中)。
我有一个函数loadFacebookDetails()
包含两个任务:
-
从 Facebook
makeRequest()
加载数据
将数据保存到我的数据库saveAndProceed()
我需要makeRequest()
->(异步)在处理保存之前完成。
这是我目前得到的:
我声明了typealias FinishedDownload = () -> ()
我创建了:
func makeRequest(completed: FinishedDownload)
.... // bunch of code
completed() // call that I completed my task at end of function
现在我不知道如何在我的 loadFacebookDetails 中调用 makeRequest。
我也创建了这个:
makeRequest () -> () in
saveAndProceed()
还有我的 saveAndProceed()。 有谁现在如何使这个语法正确?
【问题讨论】:
【参考方案1】:你应该有类似的东西:
func makeRequest(completion : ( ( Bool ) -> Void))
//your stuff goes hre
completion(true)
//or
completion(false)
func saveAndProceed()
//your stuff
func loadFacebookDetails()
makeRequest (hasSucceed) in
if hasSucceed
saveAndProceed()
else
//handle Error
【讨论】:
感谢您的帮助。我试图实现这一点,但我的 makeRequest 仍然在 saveAndProceed 之后执行【参考方案2】: func makeRequest(url: String ,callback :@escaping (YourObject) -> Void , errorCallBack : @escaping (String) -> Void )
// if finish or success
callback(objecttoSend);
// or if failed
errorCallBack(message)
然后这样称呼它
makeRequest(url: "http://", callback: (Object)in
// on ur first action
, errorCallBack: (error)in
// on ur second action
)
【讨论】:
以上是关于等待函数完成处理程序完成失败的主要内容,如果未能解决你的问题,请参考以下文章