我有一个模板,用于监视Promise<boolean>
与async
的情况,以便该表仅在将数据写入组件后才呈现。但是,如果我导航到另一个页面然后返回到该组件,即使Promise先前已被解决且数据已本地存储在该组件中,该表也将不再呈现。
我只是从根本上误解了Promises是如何工作的?我是否需要在会话存储中存储某些内容,并在解决Promise后使用它?
之所以这样做,是因为我对数据库进行了异步调用,但是我只想在绝对必要时这样做。因此,只有在最初获取数据并在将更新推送到数据库之后进行后续获取时,才发生解决Promise的调用。将该组件从其上移开时是否不保留?
编辑:包括一些基本示例代码以供澄清
app.component.ts
ngOnInit(){
this.service.fetchData();
}
service.ts
fetchData = function () {
return this.http
.get(url)
.subscribe((data, err) => {
...
this.eventSubject.next(data);
})
}
data-component.ts
...
ngOnInit(){
this.dataSub = this.service.event$.subscribe((data) => {
process(data);
});
...
}
process = function(data) {
// format data
...
this.data = formattedData;
this.dataLoaded = Promise.resolve(true);
}
data-template.html
<table *ngIf="dataLoaded | async">
<!-- Data only renders first time page is loaded -->
</table>