Await返回[Function]而不是值

时间:2019-07-14 09:51:20

标签: javascript promise async-await

await返回[Function]而不是value

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

我尝试了2个不同的版本,但结果均不正确。

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);
}

返回UnhandledPromiseRejectionWarning

function get_async_users(){
  ref = db.ref("/user_data");
  ref.orderByKey().on("child_added", function(data) {
    return data.val().name;
  });
}

返回未定义

期望其中之一返回查询中的名称。

1 个答案:

答案 0 :(得分:1)

$parent用于监听曾经触发的所有事件。因此,它不会返回Promise,因为Promise表示一个可用的值,并且因为它没有返回Promise,所以您无法on(或者至少:这样做没有意义)因此,它是无操作)。

如果要等待第一次出现,则有once,它还会返回一个可以await编辑的承诺。

关于UnhandledPromiseRejection:您应始终将异步代码包装到await(在try / catch内)中,或将async function附加到链中的最高承诺中,然后可以正确处理这些错误。