【问题标题】:Angular, HttpClient convert get response to numberAngular,HttpClient将获取响应转换为数字
【发布时间】:2019-04-16 14:34:11
【问题描述】:

我有一个 api 方法,它可以工作并返回一个 int 类型。我正在尝试将获取响应转换为角度数:

这就是我现在正在做的事情:
请求api:

  GetNumberOfPages(topValue: number, companyNamePattern: string) {
    return this.http.get<number>(apiUrl + '/getNumberOfPages?topValue=' + topValue +
      '&companyNamePattern=' + companyNamePattern, httpOptions)
      .pipe(
        tap(v => console.log('GetNumberOfPages complete')),
        catchError(this.handleError('GetNumberOfPages', []))
      );
  }

在组件中的使用:

  getNumberOfPages(topValue, companyNamePattern) {
    var numberOfPagesAny: any;
    this.api.GetNumberOfPages(topValue, companyNamePattern).subscribe(n => numberOfPagesAny = n);
    this.numberOfPages = parseInt(numberOfPagesAny, 10);

    console.log(this.numberOfPages + " number")
    console.log(numberOfPagesAny + " any")

  }

但无论我尝试什么,我都无法获得价值:
那么如何将获取响应转换为数字呢?

【问题讨论】:

  • 试试:this.api.GetNumberOfPages(topValue, companyNamePattern).subscribe(n =&gt; {if(n){ numberOfPagesAny = n}});
  • 这里尝试使用console.log看看有没有从api返回的数据this.api.GetNumberOfPages(topValue, companyNamePattern).subscribe(n =&gt; console.log(n))
  • 您在设置之前使用的是numberOfPagesAny。看看GetNumberOfPages completeNaN number 之后是如何记录的?
  • @HereticMonkey 是的,那么我应该如何解决这个问题?我也试过finalize,但结果是一样的

标签: angular get angular7


【解决方案1】:

当您使用 Observable 时,您会进行异步调用。 只有在您得到答复后才会调用订阅。

这意味着你的 console.log() 在你进入订阅之前已经被处理了!

所以你确实得到了页数,如果你想检查它,你应该在你的订阅中添加一个 console.log :

this.api.GetNumberOfPages(topValue, companyNamePattern).subscribe(n => { numberOfPagesAny = n, console.log("Number of page"+numberOfPagesAny);});

见:https://angular.io/guide/observables#observables

你需要把你的进程放在订阅中,或者使用回调函数。

【讨论】:

    猜你喜欢
    • 2019-12-21
    • 2019-08-08
    • 2019-01-01
    • 2014-01-03
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多