等待函数完成完成处理程序失败
waiting for a function to finish with completion handler fails
我正在尝试等待异步函数完成,然后再处理它的数据(例如,将其保存到我的数据库)。
我有一个函数 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()。
现在有人知道如何使这个句法正确吗?
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
})
你应该有这样的东西:
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
}
}
}
我正在尝试等待异步函数完成,然后再处理它的数据(例如,将其保存到我的数据库)。
我有一个函数 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()。 现在有人知道如何使这个句法正确吗?
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
})
你应该有这样的东西:
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
}
}
}