Javascript 在Ngondestory函数中调用时,如何等待api调用完成?
我有一个场景,在销毁特定组件之前,我必须将数据发送到api(数据库)。正如angular2生命周期中所述,在销毁组件之前执行一种方法,并将其称为Javascript 在Ngondestory函数中调用时,如何等待api调用完成?,javascript,angular,lifecycle,Javascript,Angular,Lifecycle,我有一个场景,在销毁特定组件之前,我必须将数据发送到api(数据库)。正如angular2生命周期中所述,在销毁组件之前执行一种方法,并将其称为ngondestory。但正如文档中指定的,这是一个void函数,所以它不会等待某些结果返回 我的问题是如何在Ngondestory函数中执行对api的调用并等待它完成 如果我只调用update函数,它会工作,但是当我从一个组件路由到另一个组件时,第一个组件的数据还没有更新,而下一个组件加载旧数据(如果我点击refresh,那么我会得到新数据)。所以问题
ngondestory
。但正如文档中指定的,这是一个void函数,所以它不会等待某些结果返回
我的问题是如何在Ngondestory函数中执行对api的调用并等待它完成
如果我只调用update函数,它会工作,但是当我从一个组件路由到另一个组件时,第一个组件的数据还没有更新,而下一个组件加载旧数据(如果我点击refresh,那么我会得到新数据)。所以问题是,我不能等待更新功能完全执行,然后允许组件销毁并路由到下一个组件,该组件将加载正确的更新数据:
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 => {
});
}
或者有没有其他方法可以解决这种情况?我想,不要做这样的事情,而是尝试更干净、更好的方法 使用共享服务,在
Destroy
上将r值传递给共享服务,然后导航到第二个组件。有一个路由器解析,它将确保在加载组件时填充数据并随时由您处理
对于共享服务,请检查此问题-问题2和路由器解决方案
如果您想要更好的可读性,您也可以联系redux或ngrx Are,因此我应该创建一个服务,其中我更改某个进程在后台工作的状态,并在回调中更改服务中的状态(从working=true到working=false,并发出完成的事件)。然后在新的路由中,我检查工作值是否为真,然后订阅一个事件,当它完成时通知我。然后我可以向API发出新的请求,该API将包含新的数据。因为我可以在应用程序中从组件A到组件B,应用程序应该在路由之前将数据保存到数据库,因为我也可以直接访问组件B。