我正在尝试在处理数据之前等待异步函数完成(例如将其保存到我的数据库中)。
我有一个包含两个任务的函数loadFacebookDetails()
:
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()。 现在有人如何使这种语法正确吗?
答案 0 :(得分: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
}
}
}
答案 1 :(得分:0)
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
})