如何使用angularcript中的angularcript等待Web服务的响应

时间:2018-03-28 14:20:38

标签: angular typescript https

如何在此代码中等待响应。 在这段代码中,我在ws中发布了产品。我的问题是当ws的响应被延迟时,我可能会按下按钮提交几次。我必须等待响应才能多次按下按钮。

  public createproduct(newprod: Product): Observable<boolean> {
    let headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    let body = newprod.generateUrlencodedParameters(this.auth.getCurrentUser().token);
    return this.http.post(Api.getUrl(Api.URLS.createproduct), body, {
      headers: headers
    })
      .map((response: Response) => {
        let res = response.json();
        if (res.StatusCode === 0) {
          return true;
        } else {
          return true;
        }
      });
  }

你能告诉我如何实现这个目标吗?

感谢名单

1 个答案:

答案 0 :(得分:2)

这是一个异步调用。

所以你要做的是,你返回一个Observable对象,将来会改变并返回一些东西。

您要做的是在第一次调用后禁用该功能,直到它响应某些内容。

因此,如果您的按钮类似于<button (click)=sendRequest() ...,那么您应该像以下那样实现它:

<button (click)=sendRequest(), [disabled]="areWeWaiting">CLICK ME</button>

areWeWaiting = false;

sendRequest(){
  this.areWeWaiting = true;
  this.someService.createProduct().subscribe(response =>{
   this.areWeWaiting = false;
   // process the call here 
  }, error =>{ this.areWeWaiting = false; //process error here}
  );
}

此外,我建议您删除原始服务电话中的.map部分 - 使用新的httpClient api

处理您需要的请求