首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测量外部API调用的时间:处理angular中的异步

测量外部API调用的时间:处理angular中的异步
EN

Stack Overflow用户
提问于 2019-06-12 19:21:40
回答 2查看 31关注 0票数 0

我只需要一个简单的angular应用程序来调用外部API (get请求)并测量应用程序需要多长时间来获取数据。

我的代码看起来像这样:

代码语言:javascript
运行
复制
  measureData(): {
    this.t0 = performance.now();

    this.errors = '';

    this.getHello().subscribe(
      (result: string) =>
        {
          this.text = result
          console.log("test")
          return this.text
        },
        error => {
          this.errors = error.message
          console.log(error.message)
          return this.errors
        }
    )
    this.t1 = performance.now();
    this.test = this.t1 - this.t0;
    console.log("Action took " + this.test + " milliseconds.")
    this.times.push(this.test);
  }  

在这种情况下,我遇到了异步的麻烦。所以我试了一下:

代码语言:javascript
运行
复制
main(){
    this.measureData().subscribe(
      (result: String) => {
        this.measurePerformance();
      }
    )
  }

  measureData(): Observable<any> {
    this.t0 = performance.now();

    this.errors = '';

    this.getHello().subscribe(
      (result: string) =>
        {
          this.text = result
          console.log("test")
          return this.text
        },
        error => {
          this.errors = error.message
          console.log(error.message)
          return this.errors
        }
    )
    return 
  }  

  measurePerformance() {
    this.t1 = performance.now();
    this.test = this.t1 - this.t0;
    console.log("Action took " + this.test + " milliseconds.")
    this.times.push(this.test);
  }

在这种情况下,我得到这个错误:

代码语言:javascript
运行
复制
ERROR TypeError: Cannot read property 'subscribe' of undefined
EN

回答 2

Stack Overflow用户

发布于 2019-06-12 20:11:36

您可以使用以下各项来测量所用时间:

代码语言:javascript
运行
复制
var start = new Date().getTime();

// Your code

代码语言:javascript
运行
复制
var end = new Date().getTime();

var elapsedTime = end -start;

console.log("Time", elapsedTime );
票数 0
EN

Stack Overflow用户

发布于 2019-06-13 15:02:10

对于我的解决方案,我使用了await delay(500)

代码语言:javascript
运行
复制
const delay = ms => new Promise(res => setTimeout(res, ms));

我的完整代码:

代码语言:javascript
运行
复制
async measureData() {

   this.errors = '';
   const delay = ms => new Promise(res => setTimeout(res, ms));

   for (let i = 0; i < this.numberMeasurements; i++) {
     this.t0 = performance.now();
     this.getHello().subscribe(
       (result: string) => {
         this.text = result
         this.t1 = performance.now();
         this.test = this.t1 - this.t0;
         console.log("Action took " + this.test + " milliseconds.")
         this.times.push(this.test);
         console.log(result)
       },
       error => {
         this.errors = error.message
         console.log(error.message)
       }
     )
     await delay(500);
   }

 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56561012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档