然后数组空承诺[重复]
Posted
技术标签:
【中文标题】然后数组空承诺[重复]【英文标题】:THEN ARRAY EMPTY PROMISSE [duplicate] 【发布时间】:2019-11-06 13:49:29 【问题描述】:通过调用 Promise 创建一个在 Firestore 中获取时间的方法,但由于 Promise 尚未解决,因此数组为空。如何解决只有在 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);
希望我调用的时候数组变量已经完整了。
【问题讨论】:
getTime
应该返回一些东西(一个 Promise)并且你应该等待它(使用.then()
)。
【参考方案1】:
您可以使用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);
【讨论】:
以上是关于然后数组空承诺[重复]的主要内容,如果未能解决你的问题,请参考以下文章