2016-07-06 70 views
1

我试图让firebase fetchProvidersForEmail在完成关闭之外设置一个布尔值,但我不确定该请求是如何异步的。这是我的:从异步调用返回布尔值的Firebase

FIRAuth.auth()?.fetchProvidersForEmail(emailSignUpTextField.text!, completion:{(providers, error) in 
     if error != nil{ 
      print(error) 

      if error!.code == FIRAuthErrorCode.ErrorCodeInvalidEmail.rawValue{ 
       self.showErrorAlert("Invalid Email", msg: "Please input a valid email.") 
      } 
     } 
     else{ 
      //If there are no errors and there are providers, the email exists 
      if providers != nil{ 
       self.showErrorAlert("Email in Use", msg: "There is already an account created with that email.") 
      } 
      //The email does not exist 
      else{ 
       self.segueBool = true   
       print("it works") 
      } 
     } 
    }) 

self.segueBool是我需要设置为true,如果没有错误。任何帮助,将不胜感激。

+0

您是否在另一个线程中执行此代码?如果没有,完成块应该在完成时捕获结果。在这种情况下它是否是异步并不重要。也许你需要在'if providers!= nil'之后编辑你的else语句来明确地检查你想要的结果。 – cdslijngard

+0

你的问题是什么?你想同步执行这个请求吗? – kelin

+0

是的,我希望这表现同步。 – Pikachu

回答

0

您可以设置一个全球性的最终/静态变量与布尔, 和火力点回调之前创建一个侦听器变量(这将帮助你像“同步”)

这样当变量设置你可以处理更改。

+0

你碰巧有一个例子的链接?谢谢。 – Pikachu

+0

我不知道'迅速',但也许这可以帮助你:http://stackoverflow.com/questions/27371194/set-action-listener-programmatically-in-swift –

+0

在第一个答案在这里你可以找到实现'Java':http://stackoverflow.com/questions/6270132/create-a-custom-event-in-java –