Я проводил профилирование простого вызова браузера fetch и заметил кое-что любопытное. Я вставлю сюда пример codeа:
Когда я замедляю сеть из Chrome devTools (или любого другого на основе Chromium), я вижу, что res1 увеличивается, а res2 остается прежним. Когда я делаю то же самое в Firefox, помимо того, что вижу гораздо меньшие тайминги, я также вижу, что res2 увеличивается, а res1 остается прежним, что неожиданно.
У них разная реализация?
Почему существует такая разница в поведении?
Что именно ожидают два await
? await fetch()
ждет весь ответ или только заголовки? Потому что это кажется разным в зависимости от браузеров.
Может быть, это связано с тем, как Firefox devTools замедляет сеть?
P.S. Думаю, этот вопрос может быть расширением этого: Является ли `Body.json()` быстрее, чем `JSON.parse(responseText)` для JSON, полученного от `fetch`?
const t0 = performance.now();
const response = await fetch('http://localhost:3000/data');
const t1 = performance.now();
await response.json();
const t2 = performance.now();
const res1 = `${t1 - t0}ms`;
const res2 = `${t2 - t1}ms`;