Код не выполняется по порядку (Firebase). Проблемы с синхронизацией - PullRequest
2 голосов
/ 19 апреля 2020
const signIn = async e => {
      var recaptcha = new firebase.auth.RecaptchaVerifier('recaptcha');
      var number = '+91'+mobile;
      firebase.auth().signInWithPhoneNumber(number, recaptcha).then( function(e) {
      var code = prompt('Enter the otp', '');
      if(code === null) 
      {
        return false;
      }

         e.confirm(code).then(function (result) {
             console.log(result.user);

             alert("INSIDE");
             return true;

         }).catch(function (error) {
             console.error( error);

         });

     })
     .catch(function (error) {
         console.error( error);
         return false;
     });
  }

И другая функция

const func1 = async e => {
alert("OUTSIDE1");
var check=await signIn();
if(check)
{
   alert("true value");
}
else
{
   alert("false value");
}

Выход всегда -

ВЫХОД1

ложное значение

, а затем код OTP исполняется? Может ли кто-нибудь помочь внести необходимые изменения, чтобы сделать OTP-код синхронным?

1 Ответ

1 голос
/ 19 апреля 2020

Вы не возвращаете соответствующее обещание вызывающей функции asyn c. Вы, вероятно, хотели написать:

return firebase.auth().signInWithPhoneNumber(...).then(...)

Еще лучше, поскольку вы используете async / await, просто дождитесь результата signInWithPhoneNumber внутри вашей функции signIn и полностью избегайте использования then()/catch() .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...