Javascript 获取时间与 XHR 网络时间
Javascript Fetch Time vs XHR Network Time
我在 javascript 中有一个基本代码可以通过 api 调用获取数据:
var t0 = performance.now();
fetch(
'http://domain/service',
{ method: 'GET' }
)
.then( response => {
//handle response...
t1 = performance.now();
console.log('Call to fetch-start took ' + (t1 - t0) + ' milliseconds.');
} )
.catch( error => console.error('error:', error) )
.then( () => {
...
t1 = performance.now();
console.log('Call to fetch-end took ' + (t1 - t0) + ' milliseconds.');
} );
调用时,Chrome网络时间显示为:
但控制台显示如下:
Call to fetch-start took 1931.162 milliseconds.
Call to fetch-end took 2846.36500000488 milliseconds.
我不明白浏览器网络时间和获取时间之间的区别。两者应该是一样的吧?
那是因为当 fetch
解析 Body object 时,只完成了 headers 的协商和获取。
数据的获取仍在进行中,这就是我们可以 consume this Body as a stream..
的方式
最接近实际提取结束的是 Body.arrayBuffer()
,它不对提取的数据执行任何转换。
我在 javascript 中有一个基本代码可以通过 api 调用获取数据:
var t0 = performance.now();
fetch(
'http://domain/service',
{ method: 'GET' }
)
.then( response => {
//handle response...
t1 = performance.now();
console.log('Call to fetch-start took ' + (t1 - t0) + ' milliseconds.');
} )
.catch( error => console.error('error:', error) )
.then( () => {
...
t1 = performance.now();
console.log('Call to fetch-end took ' + (t1 - t0) + ' milliseconds.');
} );
调用时,Chrome网络时间显示为:
但控制台显示如下:
Call to fetch-start took 1931.162 milliseconds.
Call to fetch-end took 2846.36500000488 milliseconds.
我不明白浏览器网络时间和获取时间之间的区别。两者应该是一样的吧?
那是因为当 fetch
解析 Body object 时,只完成了 headers 的协商和获取。
数据的获取仍在进行中,这就是我们可以 consume this Body as a stream..
最接近实际提取结束的是 Body.arrayBuffer()
,它不对提取的数据执行任何转换。