在Angular.js中获取HTTP请求时间?

3

我正在尝试通过Angular.js获取每个HTTP请求的持续时间,以便将其发送到New Relic分析中。我可以使用transformRequest找到任何HTTP请求被触发的时间,并且可以使用responseInterceptors获取已完成的请求。但是我找不到任何将这些信息链接在一起的方法。

有没有建议来获取HTTP请求的持续时间?最好是与Angularjs Rails Resource一起使用的东西:https://github.com/FineLinePrototyping/angularjs-rails-resource

1个回答

1
我从博客中获取了这段代码,用于在进行http请求时默认呈现覆盖层。我稍微修改了一下以解决你的问题。看看这是否有所帮助。
angular
    .module('analytics', [])
    .config(function($httpProvider) {
        $httpProvider.responseInterceptors.push(function() {
            return function(promise) {
                // START YOUR TIMER
                var callReturn = function(r) { 
                  // END YOUR TIMER
                  total_time = START TIMER - END TIMER
                };

                return promise.then(callReturn, callReturn);
            };
        });
    });

啊,我已经困扰了好几个小时了。如果你在callReturn中添加return r;,它就能正常工作了。 - EmptyArray
实际上,我无法让这个解决方案工作,因为我不知道如何启动一个特定于HTTP请求的计时器。这意味着在多个并发请求的情况下,会混淆不同请求的开始或结束时间。 - EmptyArray
@DaanPoron... 恐怕不行。最终并不是非常重要,但我仍然很好奇。 - EmptyArray
如何使用以下代码计算程序运行时间:var start = new Date().getTime(); var end = new Date().getTime(); total_time = end - start; - sailor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接