使用 async/await 时函数未按正确顺序触发

cfoster5

在 Angular 服务中,我创建了以下函数:

getListKey(user) {
  firebase.database().ref(`userprofile/${user.uid}/list`).once('value').then(snapshot => {
    console.log(snapshot.val())
    this.listKey = snapshot.val()
    return this.listKey
  })
}

我想在加载时在另一个文件中调用此函数,并将返回的值分配给listKey服务中的全局变量,以用于组件中的另一个函数。但是,即使使用async/检索数据,第二个函数也会触发await

这是我的组件中的相关部分:

this.afAuth.authState.subscribe(async (user: firebase.User) => {
  await this.fire.getListKey(user);
  this.fire.getUserList(this.fire.listKey).subscribe(lists => {...})
  ...
}

我怎样才能getUserList()等待listKey

尼古拉斯大厦

向 getListKey 添加 return 语句以返回承诺。否则,您将返回 undefined,等待 undefined 将不会等待数据库快照准备就绪。

getListKey(user) {
  return firebase.database().ref(`userprofile/${user.uid}/list`).once('value').then(snapshot => {
    console.log(snapshot.val())
    this.listKey = snapshot.val()
    return this.listKey
  })
}

此外,您可能想要等待的左侧:

this.afAuth.authState.subscribe(async (user: firebase.User) => {
  const listKey = await this.fire.getListKey(user);
  this.fire.getUserList(listKey).subscribe(lists => {...})
  ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用具有功能的 asyncawait 模块

来自分类Dev

终端:未按正确顺序使用文件

来自分类Dev

这些JavaScript函数触发时,我是否在正确使用setTimeout()?

来自分类Dev

Node 6.14.0 asyncawait npm 包和谷歌云函数 -> Javascript 异步函数

来自分类Dev

JavaScript 函数在睡眠时未按正确顺序执行

来自分类Dev

使用Parse时,似乎未按顺序执行GCD串行队列

来自分类Dev

ORA-01002:使用@transactional时未按顺序提取

来自分类Dev

使用Deeplink启动时,应用未按预期触发

来自分类Dev

Javascript函数未按正确的顺序调用

来自分类Dev

async/await 函数未按正确顺序执行

来自分类Dev

使用构造函数时不会触发特质

来自分类Dev

在未按顺序执行的JavaScript映射函数中将Async / Await与Fetch一起使用

来自分类Dev

使用OpenXML时以正确的顺序插入子元素

来自分类Dev

使用可折叠时,Boostrap和JQuery的正确调用顺序

来自分类Dev

使用OpenXML时以正确的顺序插入子元素

来自分类Dev

在Firefox中使用javascript时html数据属性未按预期显示,但在chrome中正确显示

来自分类Dev

Spring Aws Kinesis消息未按顺序使用

来自分类Dev

简单函数在使用 onclick 时触发,在 JS 中使用 addEventListener 时不触发

来自分类Dev

异步函数未按正确顺序返回值

来自分类Dev

在函数定义中使用 Eigen 库时,小数点未按预期存储

来自分类Dev

对JS函数使用script_queue时的执行顺序

来自分类Dev

使用dexie db时以意外顺序调用Javascript函数

来自分类Dev

为什么在不设置级别的情况下使用factor()时,输出未按字母顺序排序?

来自分类Dev

如何使用angularjs在关闭窗口时触发函数

来自分类Dev

JS同步未按顺序触发

来自分类Dev

活动未按正确顺序打开

来自分类Dev

当函数产生单个链接时,无法以正确的方式使用ThreadPoolExecutor

来自分类常见问题

使用其构造函数初始化OrderedDict的正确方法,使其保留初始数据的顺序?

来自分类Dev

异步函数未按顺序执行

Related 相关文章

  1. 1

    使用具有功能的 asyncawait 模块

  2. 2

    终端:未按正确顺序使用文件

  3. 3

    这些JavaScript函数触发时,我是否在正确使用setTimeout()?

  4. 4

    Node 6.14.0 asyncawait npm 包和谷歌云函数 -> Javascript 异步函数

  5. 5

    JavaScript 函数在睡眠时未按正确顺序执行

  6. 6

    使用Parse时,似乎未按顺序执行GCD串行队列

  7. 7

    ORA-01002:使用@transactional时未按顺序提取

  8. 8

    使用Deeplink启动时,应用未按预期触发

  9. 9

    Javascript函数未按正确的顺序调用

  10. 10

    async/await 函数未按正确顺序执行

  11. 11

    使用构造函数时不会触发特质

  12. 12

    在未按顺序执行的JavaScript映射函数中将Async / Await与Fetch一起使用

  13. 13

    使用OpenXML时以正确的顺序插入子元素

  14. 14

    使用可折叠时,Boostrap和JQuery的正确调用顺序

  15. 15

    使用OpenXML时以正确的顺序插入子元素

  16. 16

    在Firefox中使用javascript时html数据属性未按预期显示,但在chrome中正确显示

  17. 17

    Spring Aws Kinesis消息未按顺序使用

  18. 18

    简单函数在使用 onclick 时触发,在 JS 中使用 addEventListener 时不触发

  19. 19

    异步函数未按正确顺序返回值

  20. 20

    在函数定义中使用 Eigen 库时,小数点未按预期存储

  21. 21

    对JS函数使用script_queue时的执行顺序

  22. 22

    使用dexie db时以意外顺序调用Javascript函数

  23. 23

    为什么在不设置级别的情况下使用factor()时,输出未按字母顺序排序?

  24. 24

    如何使用angularjs在关闭窗口时触发函数

  25. 25

    JS同步未按顺序触发

  26. 26

    活动未按正确顺序打开

  27. 27

    当函数产生单个链接时,无法以正确的方式使用ThreadPoolExecutor

  28. 28

    使用其构造函数初始化OrderedDict的正确方法,使其保留初始数据的顺序?

  29. 29

    异步函数未按顺序执行

热门标签

归档