等待函数完成完成处理程序失败

waiting for a function to finish with completion handler fails

我正在尝试等待异步函数完成,然后再处理它的数据(例如,将其保存到我的数据库)。

我有一个函数 loadFacebookDetails() 包含两个任务:

  1. 正在从 Facebook 加载数据makeRequest()
  2. 将数据保存到我的数据库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
        }
    }
}