2016-12-08 17 views
0

データを処理する前に非同期関数が完了するのを待っています(データベースに保存するなど)。終了する>(非同期) - 私はmakeRequest()が必要saveAndProceed() 完了ハンドラで関数が終了するのを待機します

私のデータベースにデータを保存する

  • FacebookのmakeRequest()から

    1. のデータのロード:

      私はloadFacebookDetails()、2つのタスクを含む機能を持っています保存を処理する前に

      これは私がこれまでに得たものである:

      func makeRequest(completed: FinishedDownload){ 
      .... // bunch of code 
      completed() // call that I completed my task at end of function 
      
      
      } 
      

      今、私は私のloadFacebookDetailsでmakeRequestを呼び出す方法を今しないでください: 私は、私が作成したtypealias FinishedDownload =() ->() を宣言しました。

      私はまた、この作成:

      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 
         } 
        } 
    } 
    
    +0

    感謝を。私はこれを実装しようとしましたが、私のmakeRequestはまだsaveAndProceedの後に実行されます – JVS

    +0

    私は間違った行 – JVS

    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 
    }) 
    
    関連する問題