Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.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
Redux 注销操作后Ngrx取消已调度的操作_Redux_Ngrx - Fatal编程技术网

Redux 注销操作后Ngrx取消已调度的操作

Redux 注销操作后Ngrx取消已调度的操作,redux,ngrx,Redux,Ngrx,如何阻止在ngrx中注销操作后触发的所有已调度操作?是否有某种根调度器来处理此逻辑?我的回答基于此,希望我正确理解了您的需求 几天前,我有一个类似的要求:根据应用程序状态,防止任何操作从运行效果中分派。 另外,我需要一些东西在很多效果中使用这个逻辑,所以它必须简单易用 我的解决方案是在运行请求完成后过滤效果链。因此,一旦用户注销,任何响应都会被忽略 首先,我创建了一个helper类,它封装了这个“忽略”逻辑: 效果助手.ts 从'@angular/core'导入{Injectable}; 从'

如何阻止在ngrx中注销操作后触发的所有已调度操作?是否有某种根调度器来处理此逻辑?

我的回答基于此,希望我正确理解了您的需求

几天前,我有一个类似的要求:根据应用程序状态,防止任何操作从运行效果中分派。
另外,我需要一些东西在很多效果中使用这个逻辑,所以它必须简单易用


我的解决方案是在运行请求完成后过滤效果链。因此,一旦用户注销,任何响应都会被忽略

首先,我创建了一个helper类,它封装了这个“忽略”逻辑:

效果助手.ts

从'@angular/core'导入{Injectable};
从'@ngrx/Store'导入{Store};
从“rxjs/Observable”导入{Observable};
从'app/reducers/root.reducer'导入{AppState};
@可注射()
导出类EffectHelper{
构造函数(私有存储:存储操作员)

(不要忘记在您的模块中提供
EffectHelper
,就像您使用任何其他服务一样)。

我的回答是基于此,希望我正确理解了您的要求

几天前,我有一个类似的要求:根据应用程序状态,防止任何操作从运行效果中分派。
另外,我需要一些东西在很多效果中使用这个逻辑,所以它必须简单易用


我的解决方案是在运行请求完成后过滤效果链。因此,一旦用户注销,任何响应都会被忽略

首先,我创建了一个helper类,它封装了这个“忽略”逻辑:

效果助手.ts

从'@angular/core'导入{Injectable};
从'@ngrx/Store'导入{Store};
从“rxjs/Observable”导入{Observable};
从'app/reducers/root.reducer'导入{AppState};
@可注射()
导出类EffectHelper{
构造函数(私有存储:存储操作员)


(不要忘记在模块中提供
EffectHelper
,就像您使用任何其他服务一样).

您无法阻止直接发送到商店的操作。请参阅问题的注释。我认为他想取消运行效果,而不是真正的操作。可能类似于,如果您发送一个操作
更新\u PROFILE
,有效负载
{newName:'Some newName'}
,您的一个特效捕捉到它并对API进行HTTP调用。但假设请求需要很长时间,用户单击断开连接。如果上一个请求在您断开连接后结束,它仍会更新您的(已清理)store.@Maxime yes这正是我现在面临的问题。你不能阻止直接发送到store的操作。请参阅有关问题的评论。我认为他想取消运行效果,而不是真正的操作。可能就像你发送一个操作
更新\u PROFILE
和有效负载
{newName:'Some newName'}
,您的一个特效捕捉到它并对API进行HTTP调用。但假设请求花费了很长时间,用户单击了“断开连接”。如果上一个请求在您断开连接后结束,它仍会更新(已清理的)存储。@Maxime yes这正是我现在面临的问题