Обещание в Firebase для действий Google - PullRequest
0 голосов
/ 04 ноября 2018

Как мне запустить эту асинхронную задачу чтения данных из firebase? Я получаю сказать = "до", но я хочу сказать = "после".

app.intent("Default Welcome Intent - yes",(conv)=>{

  var db=admin.database(firebaseApp);
  var ref= db.ref("xyz/1");
  var movie;
  var say="before";
  ref.once("value").then(function(snapshot){
    movie=snapshot.val();

    say="after";
  });
  console.log("say is"+say);
});

1 Ответ

0 голосов
/ 04 ноября 2018

Если вы используете Promise в вашем Intent Handler, то вы должны также вернуть это Promise, чтобы диспетчер приложений знал, что происходит асинхронная операция.

У вас есть вторая проблема, когда вы пытаетесь выполнить код (console.log()) вне разрешения Promise (часть .then()), но ожидаете значение из этого разрешения. Та часть, если код может выполняться до части внутри then(). Если вы хотите, чтобы код выполнялся после разрешения Обещания, вы должны включить его в часть then().

Так что ваш код может выглядеть примерно так:

app.intent("Default Welcome Intent - yes",(conv)=>{

  var db=admin.database(firebaseApp);
  var ref= db.ref("xyz/1");
  var movie;
  var say="before";
  return ref.once("value").then(function(snapshot){
    movie=snapshot.val();

    say="after";
    console.log("say is"+say);
  });
});
...