Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 我可以发送NgRX Action&;关闭浏览器/选项卡之前的效果?_Angular_Firebase_Ngrx_Ngrx Effects - Fatal编程技术网

Angular 我可以发送NgRX Action&;关闭浏览器/选项卡之前的效果?

Angular 我可以发送NgRX Action&;关闭浏览器/选项卡之前的效果?,angular,firebase,ngrx,ngrx-effects,Angular,Firebase,Ngrx,Ngrx Effects,我正在使用firebase云存储用户的数据。为了便于讨论,让我们从列表中选出他们最喜欢的电影。现在,在使用免费firebase层时,我不想每次用户将电影标记为他们的最爱时都写入fire云 我的意图是在用户注销(我已经知道怎么做)或关闭浏览器| |选项卡后更新云中的数据 是否可以在关闭浏览器/选项卡的过程之前或期间分派操作 是否有其他方法可用于此行为?是的,您应该根据MDN: 当窗口、文档及其资源即将卸载时,将触发beforeunload事件。此时文档仍然可见,事件仍然可以取消 这通常是我在需要时

我正在使用firebase云存储用户的数据。为了便于讨论,让我们从列表中选出他们最喜欢的电影。现在,在使用免费firebase层时,我不想每次用户将电影标记为他们的最爱时都写入fire云

我的意图是在用户注销(我已经知道怎么做)或关闭浏览器| |选项卡后更新云中的数据

是否可以在关闭浏览器/选项卡的过程之前或期间分派操作


是否有其他方法可用于此行为?

是的,您应该根据MDN:

当窗口、文档及其资源即将卸载时,将触发beforeunload事件。此时文档仍然可见,事件仍然可以取消

这通常是我在需要时在应用程序的核心组件中执行的操作:

@HostListener('window:beforeunload',['$event']))
装卸工(事件)前{
this.store.dispatch(SomeActions.fireTheAction());
}

是的,您应该根据MDN:

当窗口、文档及其资源即将卸载时,将触发beforeunload事件。此时文档仍然可见,事件仍然可以取消

这通常是我在需要时在应用程序的核心组件中执行的操作:

@HostListener('window:beforeunload',['$event']))
装卸工(事件)前{
this.store.dispatch(SomeActions.fireTheAction());
}

这是一种工作。它并没有完全达到我的期望。当我在同一个标签上来回移动时,它就起作用了。刷新/关闭选项卡/关闭浏览器时不执行任何操作。在到达ngrx操作之前,我是否有一个有限的时间?ngrx操作被调度得非常快,但我假设您进行HTTP调用以保存数据(这可能需要一些时间!),这就是为什么操作完成得很好,但API调用没有。我个人使用此事件通过WS启动注销操作(这非常快,因为连接已经建立,并且我发送的负载很轻)。这是非常固执己见的,但在你的情况下,我不确定你应该只在浏览器出口保存数据,但是,这可能会有所帮助。这是一种工作。它并没有完全达到我的期望。当我在同一个标签上来回移动时,它就起作用了。刷新/关闭选项卡/关闭浏览器时不执行任何操作。在到达ngrx操作之前,我是否有一个有限的时间?ngrx操作被调度得非常快,但我假设您进行HTTP调用以保存数据(这可能需要一些时间!),这就是为什么操作完成得很好,但API调用没有。我个人使用此事件通过WS启动注销操作(这非常快,因为连接已经建立,并且我发送的负载很轻)。这是非常固执己见的,但在您的情况下,我不确定您是否应该只在浏览器退出时保存数据,然而,这可能会有所帮助。