在 ngOnDestroy 函数中调用时如何等待 api 调用完成?

How to wait for api call to complete when called in ngOnDestroy function?

我有一个场景,我必须在销毁特定组件之前将数据发送到 api(数据库)。正如在 angular2 生命周期中描述的那样,在组件被销毁之前执行一个方法,它被称为 ngOnDestroy。但正如文档中所指定的那样,这是一个无效函数,因此它不会等待某些结果 return.

我的问题是如何在 ngOnDestroy 函数中执行对 api 的调用并等待它完成?

如果我只调用更新功能它就可以工作,但是当我从一个组件路由到另一个组件时,第一个组件的数据尚未更新,而下一个组件加载旧数据(如果我点击刷新然后我得到新数据) .所以问题是我不能等待更新功能完全执行,然后允许组件销毁并路由到下一个组件,该组件将加载正确的更新数据:

updateData(data: any, callback?: Function) {
    this.apiService.update(data).then(response => {
        callback(response);
    }
}

ngOnDestroy() {
    this.updateData(this.data);
}

// Maybe i could somehow use callback functionality to postpone execution of ngOnDestroy function
ngOnDestroy() {
    this.updateData(this.data, response => {

    });
}

或者有其他方法可以解决这个问题吗?

我想与其做这样的事情,不如试试这种更干净、更好的方法。

使用共享服务,将 r 值传递给 Destroy 上的共享服务,然后在导航到第二个组件时传递。有一个 Router resolve 将确保数据被填充并在加载组件时保留供您使用。

对于共享服务,请检查此 LINK- question 2 and for Router resolve LINK

如果你想要更好的可读性,你也可以联系 redux 或 ngrx are LINK