用于异步渲染的Promise,但导航后仍无法解决

时间:2019-08-19 15:23:19

标签: javascript angular asynchronous promise

我有一个模板,用于监视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>

0 个答案:

没有答案