【问题标题】:javascript multiple returns in one functions [duplicate]javascript在一个函数中多次返回[重复]
【发布时间】:2019-04-03 12:44:41
【问题描述】:

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

我想像这样从我的 firebase 实时数据库中检索数据

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

但问题是当我调用 get() 时,它会立即返回类似 [object Promise] 的内容,因为 return firebase.database()...

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

【问题讨论】:

  • 它返回一个承诺,因为它是异步的。 get().then(val => console.log(val))

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


【解决方案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 中使用回调函数来获取promise 的响应。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多