加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 在使用ngrx时完成调度后执行代码

发布时间:2020-12-17 17:22:57 所属栏目:安全 来源:网络整理
导读:在我的示例Angular 2应用程序中,我使用ngrx / store和ngrx / effects进行状态管理. 下面是组件中添加新项目的功能之一. addAuthor() { this.store.dispatch(addAuthorAction(this.fg.value)); console.log('2') } 在上面的代码“this.store.dispatch(addAuth
在我的示例Angular 2应用程序中,我使用ngrx / store和ngrx / effects进行状态管理.

下面是组件中添加新项目的功能之一.

addAuthor() {

    this.store.dispatch(addAuthorAction(this.fg.value));
    console.log('2')        
}

在上面的代码“this.store.dispatch(addAuthorAction(this.fg.value));”中负责对服务器进行AJAX调用并添加新作者
数据库,工作正常.

因为“this.store.dispatch(addAuthorAction(this.fg.value));”是一个异步操作,即使在AJAX调用之前,也会执行console.log(“2”)语句
完成了.

我的问题是,需要修改什么才能在store.dispatch完成后执行console.log.

解决方法

快速回答:你做不到.

正如你所说,dispatch是异步的.

你应该做的是使用@ngrx/effects.它与使用addAuthorAction几乎相同,除了不是调用一个函数,你“捕获”调度的动作,并在它们被减速器应用之后做一些事情.

所以我希望我一般来说,就是我将我的行动分成3个,例如:
? – FETCH_USER
? – FETCH_USER_SUCCESS
? – FETCH_USER_ERROR

> FETCH_USER仅用于切换布尔值,因此我可以在获取用户时显示微调器
>我从效果中捕获此操作并发出http请求以获取用户
>如果http响应正常并且我有我正在寻找的信息,我从效果FETCH_USER_SUCCESS发送响应作为有效负载,否则我调度FETCH_USER_ERROR并且我将布尔值切换为false(所以我们可以尝试再次取回他)例如).

所以在你的例子中,如果你想在FETCH_USER_SUCCESS之后调试console.log,只需使用另一个效果来捕获FETCH_USER_SUCCESS并在此处执行你想做的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读