【问题标题】:Time how long a service call takes to gather its response服务调用收集其响应所需的时间
【发布时间】:2016-09-09 14:25:53
【问题描述】:

我正在计算几个服务调用需要多长时间来收集响应并将其设置在变量中。例如,在这样的调用中:

response = svc.call.someService()

我可以像这样使用约会电话:

var start = new Date.getTime();
response = svc.call.someService();
var end = new Date.getTime();
var time = end - start;

但是我需要在我的代码中使用多个服务调用来执行此操作,并且想以某种方式创建一个可以为我执行此操作但保持响应变量不变的函数。我也无法更改服务本身。关于收集服务调用需要多长时间的优雅方式的任何想法?

【问题讨论】:

  • “服务电话”我假设您的意思是XMLHttpRequest?
  • 这是一个专有服务调用。不是 XMLHttpRequest。如果是这样,我将能够添加一个事件侦听器或我相信的东西,但我认为这里不是这种情况。
  • 为您的服务调用例程创建一个包含计时代码的包装函数,另请参阅developer.mozilla.org/en-US/docs/Web/API/Performance
  • 包装函数运行良好。谢谢!

标签: javascript function time service call


【解决方案1】:

您可以创建一个完全按照您的建议执行的包装函数,并将服务器调用引用作为参数传递给它,就像这样......

function timeServiceCall(serviceCall) {
    var start = new Date.getTime();
    var response = serviceCall();
    var end = new Date.getTime();
    console.log("time taken = " + end - start);
    return response;
}

然后你只需像这样调用服务调用......

var response = timeServiceCall(svc.call.someService);

【讨论】:

  • 不错!我是 Javascript 新手,所以我忘记了回调。感谢您的想法应该行之有效。
  • 不用担心 - 很高兴为您提供帮助 :)
  • 顺便说一句,我建议您看看这个...developer.mozilla.org/en-US/docs/Web/API/Console/time 它非常适合帮助调试性能问题。
【解决方案2】:

制作一个包装函数,如下所示:

function time (callback) {
    var start = new Date().getTime();
    var result = callback.call();
    return [result, new Date().getTime() - start];
}

然后像这样使用:

var called = time(svc.call.someService);
var result = called[0];
var timeTaken = called[1];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多