No. JavaScript en los navegadores web no es solo de una sola hebra, sino que comparte el mismo hilo con la representación del navegador. Si su código JavaScript se bloqueara, la IU del navegador dejaría de responder durante ese período.
La forma típica de abordar eventos basados en el tiempo en JavaScript es mediante el uso de asynchronous timers. John Resig escribió un artículo interesante hace un tiempo llamado "How JavaScript Timers Work", que es posible que desee retirar.
ACTUALIZACIÓN:
¿Está utilizando el Google Visualization API de las guas? Si es así, me parece que Google ya maneja la animación suave que estás tratando de lograr. Pruebe lo siguiente en el Google Code Playground (mantener un ojo en el medidor de Red):
function drawVisualization() {
// Create and populate the data table.
var data = new google.visualization.DataTable();
var chart;
data.addColumn('string', 'Label');
data.addColumn('number', 'Value');
data.addRows(3);
data.setValue(0, 0, 'Memory');
data.setValue(0, 1, 80);
data.setValue(1, 0, 'CPU');
data.setValue(1, 1, 55);
data.setValue(2, 0, 'Network');
data.setValue(2, 1, 68);
// Change the value of the Network Gauge after 3 seconds.
setTimeout(function() { data.setValue(2, 1, 20); chart.draw(data); }, 3000);
// Create and draw the visualization.
chart = new google.visualization.Gauge(document.getElementById('visualization'));
chart.draw(data);
}
@Daniel Vassallo: is setTimeOut() el (único) camino a seguir (sin jQuery)? –
Sí, 'setTimeout' no bloqueará el subproceso de la interfaz de usuario. –
@Greg: Sí, [setTimeout()] (https://developer.mozilla.org/en/window.setTimeout) y [setInterval()] (https://developer.mozilla.org/en/window.setInterval) no bloquear la ejecución. Le permitirán definir una función de devolución de llamada, que se invocará cuando expire el tiempo de espera. En general, este es el camino a seguir para la mayoría de los eventos basados en el tiempo en JavaScript. –