Javascript 等待返回[函数]而不是值

Javascript 等待返回[函数]而不是值,javascript,promise,async-await,Javascript,Promise,Async Await,等待返回[函数]而不是值 尝试使用async和Wait函数从firebase返回查询值。返回的结果是[Function]或未处理的承诺拒绝警告。对Promissions、async和await不熟悉,但我已经在一些网站上尝试了基本示例,大多数都有resolve和reject参数,我认为这些参数应该与firebase Promissions相同 我尝试了两个不同的版本,结果都不正确 get_all_users:async function(){ ref = db.ref("/user_dat

等待返回[函数]而不是值

尝试使用async和Wait函数从firebase返回查询值。返回的结果是[Function]或未处理的承诺拒绝警告。对Promissions、async和await不熟悉,但我已经在一些网站上尝试了基本示例,大多数都有resolve和reject参数,我认为这些参数应该与firebase Promissions相同

我尝试了两个不同的版本,结果都不正确

get_all_users:async function(){
   ref = db.ref("/user_data");
   const value = await ref.orderByKey().on("child_added", function(data){});
   console.log(value.val().name);
}
返回未处理的PromisejectionWarning

function get_async_users(){
  ref = db.ref("/user_data");
  ref.orderByKey().on("child_added", function(data) {
    return data.val().name;
  });
}
返回未定义的


期望其中一个从查询返回名称。

on
用于侦听所有触发的事件。因此,它不返回承诺,因为承诺表示一个可用的值,并且因为它不返回承诺,所以您不能等待它(或者至少:这样做没有意义,这是不可行的)

如果要等待第一次出现,则有,它还返回一个可以
wait
ed的承诺


关于未处理的PromiserRejection:您应该始终将异步代码包装成一个
try/catch
(在
异步函数中),或者将
.catch
附加到链中的最高承诺上,然后您就可以正确处理这些错误。

Firebase文档是否说
on
返回承诺?基于函数名,它似乎不太可能返回…谢谢Jonas。抱歉,我不太清楚什么是“开”,并认为这是一个承诺。我怀疑这是一个承诺,因为返回的值未定义,我必须“等待”结果出现。once确实返回第一次出现,但是如果我想要查询中的所有数据呢?那么Firebase文档中可能有更合适的方法。。。。