首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NGXS ofActionSuccessful

NGXS ofActionSuccessful
EN

Stack Overflow用户
提问于 2020-02-23 22:13:06
回答 2查看 366关注 0票数 1

我有一个订阅ofActionSuccessful的angular组件。当用户单击页面上的按钮时,将调度此操作。用户可能会多次单击此按钮,从而导致此操作的多个调度事件

代码语言:javascript
复制
 this.actions$.pipe(ofActionSuccessful(UpdateCommunicationPreferences)).subscribe(() => {
  console.log('Action Successful');
});

this.store.dispatch(
    new UpdateCommunicationPreferences(this.communicationPreferenceForm.value)
  );

我遇到的问题是ofSuccessful是以累积的方式触发的。换句话说,用户第一次单击该按钮时,将打印一次"Action Successful“。用户第二次单击该按钮时,会打印两次,依此类推。

如果有一种方法可以不为过去的操作获取重复的ofSuccessful事件,有人能帮上忙吗?

感谢任何洞察力。

EN

回答 2

Stack Overflow用户

发布于 2020-02-23 23:15:12

此程序包的开发考虑到了您的问题:

https://www.npmjs.com/package/@ngxs-labs/actions-executing

@Select(actionsExecuting(UpdateCommunicationPreference)) myActionIsExecuting$:Observable;

您可以在带有异步管道的模板中使用myActionIsExecuting$。您也可以简单地订阅myActionIsExecuting,以熟悉返回的内容。当该特定操作的所有实例完成时,将返回null。

我希望这对你有帮助!

票数 0
EN

Stack Overflow用户

发布于 2020-02-28 11:32:06

看看这个:https://www.ngxs.io/advanced/cancellation

摘自链接:“如果你有一个异步操作,如果该操作再次被调度,你可能想要取消之前的可观察对象。这对于取消之前的请求很有用,就像在typeahead中一样。”

或者,您可以考虑在触发操作分派之前,当按钮被单击时禁用UI的模式(例如,通过“正在进行”对话框)。完成操作处理后,关闭对话框。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60363060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档