Nie. JavaScript w przeglądarkach internetowych ma nie tylko jeden wątek, ale ma ten sam wątek z renderowaniem przeglądarki. Jeśli Twój kod JavaScript miał zostać zablokowany, interfejs użytkownika przeglądarki przestałby odpowiadać w tym okresie.
Typowym sposobem radzenia sobie z wydarzeniami opartymi na czasie w JavaScript jest użycie asynchronous timers. John Resig napisał kiedyś interesujący artykuł o nazwie "How JavaScript Timers Work", który możesz wypróbować.
UPDATE:
Czy używasz Google Visualization API dla Guages? Jeśli tak, wydaje mi się, że Google obsługuje już płynną animację, którą próbujesz osiągnąć. Spróbuj wykonać następujące czynności w Google Code Playground (miej oko na mierniku Network):
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: czy setTimeOut() to (jedyna) droga (bez jQuery)? –
Tak, 'setTimeout' nie będzie blokować wątku interfejsu użytkownika. –
@Greg: Tak, [setTimeout()] (https://developer.mozilla.org/en/window.setTimeout) i [setInterval()] (https://developer.mozilla.org/en/window.setInterval) nie blokuj wykonania. Pozwoli Ci to zdefiniować funkcję zwrotną, która zostanie wywołana po upływie limitu czasu. Ogólnie jest to sposób na większość wydarzeń związanych z czasem w JavaScript. –