在 Angular 中 POST 请求后调用 GET 请求

问题描述 投票:0回答:3

我想在使用 Angular 发出 POST 请求后调用 GET 请求。

这是我到目前为止的代码,这是好的解决方案吗?

   update(){
     this.http.post<any>("/ssservice", "products=" + body, options)
       .suscribe({
         complete: () => {
           this.http.get<Product[]>("/ssservice")
             .suscribe({
               (data: Product[]) => products.push(...data),
               err => console.log(err)})
         }
       });
    }

非常感谢任何帮助。

javascript angular asynchronous post get
3个回答
1
投票

是的,当然这是一个好方法,因为 http 是异步调用,因此在这种情况下最好在 http 的成功块中调用任何函数/代码。

但是请尽可能多地尝试破坏您的代码。 正如在您的用例中一样,您可以调用另一个函数并在其中调用 get 请求,如下所示 -

update(){
     this.http.post<any>("/ssservice", "products=" + body, options)
       .suscribe(
         complete: () => {
           this.anotherGetReuqest();
         });
    }

anotherGetReuqest() {
this.http.get<Product[]>("/ssservice")
   .subscribe({(data: Product[]) => products.push(...data),
    err => console.log(err)})
}

1
投票

我认为@PardeepJain 正在告诉我们

update(){
  this.http.post<any>("/ssservice", "products=" + body, options)
    .suscribe({
      complete: () => {
        this.getProduct()
      },
    });
}

getProduct () {
  this.http.get<Product[]>("/ssservice")
    .subscribe({
      (data: Product[]) => products.push(...data),
       err => console.log(err)})
}

0
投票

更好的方法是使用 concatMap

© www.soinside.com 2019 - 2024. All rights reserved.