這種併發問題問題涉及,如何顯示忙碌圖標看到這個問題上的建議:Javascript - loading/busy indicator or transparent div over page on event click如何處理AJAX網站中的繁忙圖標?
當用戶啓動一個頁面上的AJAX請求,這是有用的,以顯示某種「工作」或忙圖標或進度指示器。如果只有一個長期運行的進程這可以在一個相對簡單的方式處理:
function do_action() {
show_busy_icon();
long_running_asynchronous_process(function() {
// Callback function run when process finishes
hide_busy_icon();
});
}
但是,如果多個異步進程在頁面上運行,使用開/關的方法是行不通的。即使有其他進程在運行,第一個完成的進程也會關閉圖標。
那麼,如何處理在網頁上顯示一個指示符,當有一個或多個進程正在運行時顯示該指示符,並在沒有進程正在運行時關閉?
我想這將有可能一直保持運行的進程數的計數。 hide_busy_icon()
只在過程計數爲0時隱藏圖標。看起來有點容易失敗。也許有一種更好/更簡單的方式,我沒有看到。
感謝您的意見和建議!
編輯:用了一段時間的顯着答案的解決方案的工作後,我很高興地說,它工作得很好。我碰到的唯一問題是我自己的腳本調用我不控制的腳本函數的情況。除非這些函數允許提供回調,否則在開始和結束時無法更新過程計數。
其中發生此罐加入一組標記爲谷歌地圖的一個實例。一旦我的腳本調用谷歌地圖功能,忙圖標消失,而標記仍在加載。
我不知道處理這個問題的好方法。
我不認爲你的例子解決了這個問題。你有兩個網址:url1和url2.url1需要1秒來加載,url2需要5秒加載。呼叫加載(url1)和加載(url2)他們都顯示忙圖標。 – GloryFish 2008-12-09 18:50:09
1秒後url1返回一個響應,並關閉忙圖標。您有4秒,其中url2正在工作,但沒有圖標顯示。 – GloryFish 2008-12-09 18:50:47