首页 > 解决方案 > 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

解决方案


Angular 文档很好地解释了这一点。

您的代码使用Observables - 您可以做.subscribe()的任何事情。

https://angular.io/guide/observables

TLDR;可观察对象按设计异步执行代码,以允许您的应用程序继续运行其他任务。例如,用于调用 API。


推荐阅读