javascript在一个函数中多次返回

时间:2019-04-03 12:44:42

标签: javascript firebase firebase-realtime-database return google-cloud-functions

我一直在使用Firebase云功能,但遇到了麻烦。

我想从我的Firebase实时数据库中检索数据

function get(){
  return firebase.database().ref('/state').once('value', (snapshot) => {
  return snapshot.val();
  });
}

但是问题是当我调用get()时,由于[object Promise]

它会立即返回类似return firebase.database()...的内容。

有没有办法只返回snapshot.val()

1 个答案:

答案 0 :(得分:-1)

JavaScript是异步的。请阅读有关promises and how it works的信息。 您的get()返回一个诺言,您需要等待它使用then

来解决
function get(){
    return firebase.database()
    .ref('/state')
    .once('value', 
        (snapshot) => {
            //This is a arrow function and return is for this callback function passed to once
            return snapshot.val();
         });
}

您可以在then内使用use回调函数来获取promise的响应。

//Passing a callback function inside then which will print snapshot value
get().
then(val => console.log(val))

借助ES7,您还可以使用async await结构来实现承诺。