创建一个方法来通过调用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);
}
我希望在调用该数组变量时已经完成。
答案 0 :(得分:0)
您可以使用async
和await
。
在使用中。
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);
}