我有一个场景,我必须在销毁特定组件之前将数据发送到api(数据库)。正如在angular2生命周期中描述的那样,在组件被销毁之前执行一个方法,并且它被称为ngOnDestroy
。但是正如文档中所指出的那样,这是一个void函数,因此它不会等待某些结果返回。
我的问题是如何在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 => {
});
}
或者还有其他方法可以解决这种情况吗?