angular - ClienteApiRestService 在角度平行中订阅?
问题描述
我有一个CRUD,当我设置一个字段的值时,我必须先更新该字段,然后把所有的字段都给我。
如果我在两个“.subscribe”中执行操作,则两个请求都“并行”执行,并且 crud 没有正确更新。(即使指令落后,我们也会在没有设置字段的情况下更新 crud)
this.clienteApiRest.putEnabled(this.enableSelector,
!this.enabled).subscribe(res => {
this.clienteApiRest.getAllUsers(this.enabled).subscribe(
(resp: User[]) => {
this.users = resp; //asigna la responsive de users hacia la Users [] local que teniamos.
console.log("datos: " + resp);
resp.forEach(function (data) {
});
},
err => console.log("Error: " + err)
);
}
);
如果我包含“.subscribe”以使订阅中的 crud 用户对其进行修改,则该请求是正确的。
this.clienteApiRest.putEnabled(this.enableSelector, !this.enabled).subscribe(res => {})
**parallel execution?**
this.clienteApiRest.getAllUsers(this.enabled).subscribe(
(resp: User[]) => {
this.users = resp; //asigna la responsive de users hacia la Users [] local que teniamos.
console.log("datos: " + resp);
resp.forEach(function (data) {
});
},
err => console.log("Error: " + err)
);
}
);
为什么会这样?
解决方案
Angular 文档很好地解释了这一点。
您的代码使用Observables - 您可以做.subscribe()
的任何事情。
https://angular.io/guide/observables
TLDR;可观察对象按设计异步执行代码,以允许您的应用程序继续运行其他任务。例如,用于调用 API。
推荐阅读
- python - __str__ 返回非字符串(潜在客户类型)
- javascript - 如何确保 AMQP 消息不会丢失,以防 rhea 订阅者出错?
- php - 根据自定义“woocommerce_variation_option”将复选框添加到 WooCommerce 结帐页面
- python - Pandas:替换字符串列值(等于、包含、大小写)
- java - Spring JPA没有从数据库中获取最新记录
- mongodb - OpenBSD 6.6 上的 scons 中的编译器版本没有变化
- php - 使用日期时间对象 symfony php 编码/解码 Json
- c# - blazor 可以使用自定义属性更改回调事件吗?
- c# - 如果对象成员没有值,如何为对象分配 null - automapper c#
- javascript - 与命名导出相比,默认导出有什么优势吗?