性能的Javascript功能,使HTTP请求
我需要一种测量JavaScript函数的响应时间的方式来创建一个http请求,其中包括该http请求的响应时间。然而,我无法修改该功能。性能的Javascript功能,使HTTP请求
这里就是我想要做的事:
var startTime = performance.now(); //log start timestamp
foo.bar(); //The Function that generates an HTTP request
var endTime = performance.now(); //log end timestamp
var diffTime = endTime - startTime;
但只捕获需要的功能来生成请求的时间。有没有一种方法来捕获在javascript中生成请求的响应时间?
您必须检查请求回调中的时间戳。
编辑:
如果你想要做(所以只是通过增加另一个js文件),从应用程序完全独立测量这一点,我想你可以装饰的XMLHttpRequest。
window.XMLHttpRequest = function() {...}
您的包装将需要具有相同的API,以便应用程序仍然有效,并且还可以在内部测量性能。
我通常会打F12,在任何浏览器上打开开发工具,进入网络选项卡,然后查看正在制作的ajax调用,它会告诉您多长时间的请求和静音所带来的非常细节细节。但是,如果您正在考虑使用ajax调用的java脚本,请在调用之前启动计时器,并在ajax调用的完整事件中停止它(将需要编辑该函数) 。如果它是异步的,这是捕捉它的唯一方法。根据你的描述,在这里猜测它实际上是一个异步调用,这就解释了函数的行为只是让ajax调用返回而不关心状态或响应...
如果你发生在你无法访问的功能被使用jQuery,你可以给这个一杆:
$.when(foo.bar()).done(function()
{
console.log("Fired after ajax request is done!");
});
看看还在:
var obj = {
promise: function() {
// do something
}
};
$.when(obj).done(fn);
或
var obj = {
promise: foo.bar()
};
$.when(obj).done(callback);
或退房这篇大文章http://www.erichynds.com/blog/using-deferreds-in-jquery
好了,如果你没有一个存取权限的功能,或者您不能编辑Ajax调用,您可以创建一个监听器。策略:
- 声明一个标志以前生产的HTTP请求调用
- 开始呼叫
- 开始侦听环每隔X毫秒,然后检查结束状态(阿贾克斯功能外,并在其后被称为)
你应该问自己:当这个调用结束时,哪种类型的变量会被改变?事件的UI视觉变化可以作为一个标志
,如果你想知道如何建立你的听众..它看起来是这样的:
function listener()
{
// do some checks here
if (done)
{
var endTime = performance.now(); //log end timestamp
var diffTime = endTime - startTime;
}
else
{
setTimeout(listener(), 100);
}
}
listener(); // activate the listener
是用jQuery的AJAX或生成您的HTTP请求。后/获取?如果是这样,请在回调中调用performance.now。 – RobertoNovelo 2014-11-20 21:32:28
虽然我无权修改该功能。有没有解决方法? – Alanpep 2014-11-20 21:41:04
你有没有注册任何回调函数? – RobertoNovelo 2014-11-20 21:42:35