【发布时间】:2018-07-22 22:20:59
【问题描述】:
我想检查发送到 API 的多个请求的响应时间,而不是在 chart.js 的帮助下将其显示在图表上只有当客户端收到用户输入的相同数量的响应时,我的代码才会在图表上添加点。
这里是负责向 API 发送请求并返回响应时间和数据权重的函数:
testRequests(numOfRequests, numOfRecords, db): Subject<any> {
const subject = new Subject();
for (let i = 1; i <= numOfRequests; i++) {
const start_time = performance.now();
this.http.get(BASE_URL + DATABASE + db + LIMIT + numOfRecords, {observe: 'response'}).subscribe((response) => {
subject.next({
time: performance.now() - start_time,
weight: response.headers.get('Content-Length')
});
});
}
return subject;
}
这里是 func,它接收结果,当它具有与用户请求的相同数量的响应时,它会将点添加到图表:
makeTest(requestsAmount = 1, requestDB = 'aurora') {
const arrOfResults = [];
this.subscription = this.api.testRequests(requestsAmount, 5, requestDB).subscribe(
result => {
arrOfResults.push(result);
if (arrOfResults.length === +requestsAmount) {
this.lineChartData[0].data.push(arrOfResults[arrOfResults.length - 1].time);
this.lineChartData[1].data.push(arrOfResults[arrOfResults.length - 1].weight * arrOfResults.length / 1024);
this.lineChartLabels.push(arrOfResults.length + ' - ' + (requestDB === 'aurora' ? 'Aurora' : 'DynamoDB'));
this.chart.chart.update();
}
},
err => console.error(err),
() => console.log('completed')
);
}
因为我听说不能保证请求会产生响应,并且响应可能会丢失,所以我想改进我的代码,所以它会在图表上生成点,以防缺少一些响应。
【问题讨论】:
标签: javascript angular rxjs