Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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 使用ngxs的异步操作的成功/失败操作事件的目的是什么?_Angular_Cqrs_Ngxs - Fatal编程技术网

Angular 使用ngxs的异步操作的成功/失败操作事件的目的是什么?

Angular 使用ngxs的异步操作的成功/失败操作事件的目的是什么?,angular,cqrs,ngxs,Angular,Cqrs,Ngxs,ngxs的示例应用程序通常为每个异步操作分配离散的成功/失败操作 例如: 对我来说,如果您想等待操作成功/失败,那么只需观察调度就更有意义了 对于大多数情况,您只关心失败,因为要从存储中读取数据,我希望使用独立的选择,而不是查看操作流 在处理故障方面,我认为通常是调度员对处理故障感兴趣 Stackblitz展示了我的首选方法: 这个模式是否只是flux/redux的一个延迟,其中调度不会返回异步操作的句柄?或者这种方法有什么好处是我没有看到的?根据我目前使用NGX的经验,我们既使用了您喜欢的方

ngxs的示例应用程序通常为每个异步操作分配离散的成功/失败操作

例如:

对我来说,如果您想等待操作成功/失败,那么只需观察调度就更有意义了

对于大多数情况,您只关心失败,因为要从存储中读取数据,我希望使用独立的选择,而不是查看操作流

在处理故障方面,我认为通常是调度员对处理故障感兴趣

Stackblitz展示了我的首选方法:


这个模式是否只是flux/redux的一个延迟,其中调度不会返回异步操作的句柄?或者这种方法有什么好处是我没有看到的?

根据我目前使用NGX的经验,我们既使用了您喜欢的方法,也在某些情况下使用了明确的成功/失败操作

我们使用显式动作的地方通常是一个州想要对另一个州的变化做出反应的地方

例如,具有捕获某些公共参考数据的状态,但我们只能在用户登录后加载该状态。我们调度一个
loginsucess
操作,并让
ReferenceDataState
响应该操作以调用API并获取引用数据


我们遇到的另一种情况是,调用方希望知道一些数据,例如原始操作创建的实体的ID。商店的
dispatch
函数返回一个可观察的无效返回类型,因此我们可以使用成功操作来获取该结果值。

你所说的
商店的dispatch函数具有无效返回类型是什么意思?当我查看源代码时,它看起来像是
Observable)。我指的是文档re:dispatching actions-指的是void类型的Observable。我已经有一段时间没有检查源代码了,文档是否与最新版本不一致?看起来好像有什么事情发生了(或者可能我不完全理解它是如何工作的)。当我订阅
dispatch
时,我得到的是特定时刻的状态(
.subscribe(value=>console.log(this.store.snapshot()==value)
给出
true
)。显然,如果调度更多操作,则返回值可能是状态的旧形式,但仍然存在返回值。了解更多信息将很有趣。该签名可能已更改,我没有在我们的应用程序中运行最新版本的NGXS-升级时我会仔细查看。不是答案,因为我不是su关于它:在CQRS模式中(请参阅ngxs.io frontpage-也许我错了,但ngxs是CQRS)命令(
@Action()
)应该返回void(“规范中的纯CQR”),但在现实中(“经过战斗测试的CQR”),至少返回“一切都会好起来/下地狱”(请参阅)。我认为您刚刚从“纯CQR”切换过来了(使用成功/失败的命令/
@Action()
)到“经过战斗测试的CQR”)