¿Por qué un navegador no siempre finaliza la representación del HTML anterior, antes de ejecutar JavaScript?

La pregunta es sobre el siguiente código:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Test</title>
</head>
<body>
    One line of HTML code
    <script>
        // Synchronous delay of 5 seconds
        var timeWhile = new Date().getTime();
        while( new Date().getTime() - timeWhile < 5000 );
    </script>
</body>

Lo probé en Firefox y Chrome y muestran (representación): "Una línea de código HTML" después de 5 segundos y no dentro de los 5 segundos. ¿Por qué hace eso un navegador?

Entiendo por qué un navegador tiene que dejar de renderizar al ejecutar JavaScript, porque puede cambiar el estilo de los elementos con JavaScript (como ejemplo). Daría problemas si el navegador tiene que mostrar y cambiar el contenido exactamente en el mismo momento. Es por eso que un navegador bloquea el renderizado mientras ejecuta JavaScript.

En el ejemplo anterior al comenzar con la ejecución de JavaScript, el "analizador HTML" ya analiza "Una línea de código HTML". Tiene que hacerlo, porque JavaScript puede contener, por ejemplo, document.write, por lo que la cadena adjunta debe ir después del HTML anterior. Aparentemente hay algún tiempo entre "analizar HTML" y mostrar / representar ese mismo HTML, porque de lo contrario el navegador en este ejemplo ya mostraría algo dentro de 5 segundos, pero ese no es el caso.

Cuando reemplaza "Una línea de código HTML" por mucho código HTML, el navegador ya mostrará parte del contenido dentro de los 5 segundos, por lo que, en principio, es posible mostrar parte del contenido.

Si fuera un navegador entonces haría:

Parse "Una línea de código html"Al ver algún bloque de JavaScriptTermine de renderizar el HTML, precediendo el "bloque de JavaScript", para que el navegador muestre en este punto: "Una línea de código HTML"Ahora pause el renderizado y ejecute el código JavaScript.Después de ejecutar el código JavaScript, comience a renderizar nuevamente.

En un ejemplo como este, el navegador podría mostrar algo de contenido 5 segundos antes. Esa es una gran ganancia de velocidad en términos de renderizado.

Tal vez es algo que los navegadores pueden mejorar, pero tal vez haya otra razón. Tal vez alguien sepa más al respecto y pueda explicarme eso.

Respuestas a la pregunta(2)

Su respuesta a la pregunta