然后阵列清空承诺

时间:2019-06-24 18:14:51

标签: javascript angular typescript firebase google-cloud-firestore

创建一个方法来通过调用promise来在Firestore中获取时间,但是该数组为空,因为尚未解决诺言。如何解决只有在getTime()调用终止时才能调用数组的方法。

Angular Cli 8

example.service.ts

teste: [];

getTime() {
    this.userCollection.ref.get()
      .then(res => {
        if (res.docs.length == 0) {
          alert('Não existem marcacoes até o momento por favor aguarde')
        } else {
          res.forEach(ponto => {
            console.log(ponto.id);
            console.log(ponto.data().time.seconds * 1000);
            this.time.push(new Date((ponto.data().time.seconds * 1000)));
          })
        }
      }).catch(err => {
        console.log(err);
      })
  }
example.component.ts

ngOnInit() {
    this.mainService.getTime();
    console.log(this.mainService.time);
  }

我希望在调用该数组变量时已经完成。

1 个答案:

答案 0 :(得分:0)

您可以使用asyncawait

在使用中。

getTime() {
    return this.userCollection.ref.get()
      .then(res => {
        if (res.docs.length == 0) {
          alert('Não existem marcacoes até o momento por favor aguarde')
        } else {
          res.forEach(ponto => {
            console.log(ponto.id);
            console.log(ponto.data().time.seconds * 1000);
            this.time.push(new Date((ponto.data().time.seconds * 1000)));
          })
        }
        return true;
      }).catch(err => {
        console.log(err);
      })
  }

在组件中,

async ngOnInit() {
    await this.mainService.getTime();
    console.log(this.mainService.time);
}