我的腳本運行如下:
是否可以在JavaScript中並排運行多個函數,即使它們沒有在同一時間觸發?
//Gets triggered when a button is clicked
function button_1() {
...
setTimeout(other_function(), 0);
...
}
//Checks if for hundreds of thumbnails a high-res version is available
function other_function() {
...
$.ajax({
url: url_to_highres_file,
type: 'HEAD',
cache: false,
error: function() {
$(#output).text('The file ' + filename_of_current_file + ' is not available!');
}
});
...
}
據我所知,直到函數「other_function」時觸發功能「button_1」被觸發,執行代碼。從那時起,這兩個函數就同時運行。我現在的問題是,函數「other_function」運行很長時間。當該功能正在運行並且用戶觸發另一個功能時,例如「button_2」,那麼javascript在函數「button_2」內開始執行代碼之前首先完成「other_function」函數。
由於函數「other_function」對用戶沒有那麼高的優先級,所以網站更重要的是響應輸入,而不是先完成「other_function」函數。
有沒有一種方法可以從函數「other_function」中繼續執行代碼塊,還可以在函數「button_2」之間混合代碼塊,所以它們並排運行,用戶不必等到函數「other_function」已完成?
非常感謝您的幫助!
我建議尋找webworkers,因爲它可以讓你的other_function代碼在一個單獨的進程中運行,並且同時運行。 JS在瀏覽器中是單線程的。所以雖然它的事件驅動而不是線性的,但它仍然只能一次執行一個函數。工人通過開始一個新的獨立線程來解決這個問題。 – Brian 2014-09-27 05:20:25
謝謝Brian。我感謝您的意見! – ITinfrastructure 2014-09-27 05:28:17