否。網頁瀏覽器中的JavaScript不僅是單線程的,而且它與瀏覽器呈現共享相同的線程。如果您的JavaScript代碼被阻止,那麼在此期間瀏覽器UI將變得無響應。
在JavaScript中處理基於時間事件的典型方法是使用asynchronous timers。 John Resig前一段時間寫了一篇鬱悶的文章,名字叫「How JavaScript Timers Work」,你可能想查看一下。
UPDATE:
您是否使用了Google Visualization API的軌距?如果是這樣,我認爲Google已經處理了您正在嘗試實現的流暢動畫。請在Google Code Playground(請注意網絡儀表)中嘗試以下操作:
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:setTimeOut()(唯一)的方式去(沒有jQuery)? – 2010-09-18 00:54:54
是的,'setTimeout'不會阻塞UI線程。 – 2010-09-18 00:55:31
@Greg:是的,[setTimeout()](https://developer.mozilla.org/en/window.setTimeout)和[setInterval()](https://developer.mozilla.org/en/window.setInterval )不要阻止執行。他們會讓你定義一個回調函數,當超時到期時會調用它。一般來說,這是JavaScript中大部分基於時間的事件的方法。 – 2010-09-18 00:58:41