2011-11-05 64 views
4

我想確保結果顯示給用戶,所以我做了同步AJAX調用。使用異步AJAX(示例無處不在)顯示「加載」指示器非常簡單,但是當我使用XMLHttpRequest同步AJAX調用時,加載指示器GIF圖像根本不顯示。如何在純JavaScript中進行'同步'AJAX調用時顯示'加載'?

有人說,在做同步呼叫時阻塞指示器是不可能的(阻塞直到有服務器響應)。但我只想問問是否有辦法做到這一點。

回答

7

這是「不可能的」,因爲Javascript是單線程的,並且同步調用會阻止UI的更新。

但是,您可能會在啓動同步AJAX調用之前顯示動畫「加載」圖形,並在成功或失敗時刪除它。我相信即使在技術上阻止同步呼叫時,大多數瀏覽器仍然能夠繼續呈現動畫GIF。

+1

是的。它可以顯示圖形,然後使用(很短的)'setTimeout'來啓動同步Ajax,以便瀏覽器在運行Ajax之前有機會重新繪製。 – nnnnnn

+0

@nnnnnn這並不能保證瀏覽器可以得到繪製的機會。瀏覽器花費在繪圖上的時間是不可測量的 – jondinham

+1

@Paul - 是的,但是(取決於瀏覽器)僅僅通過超時分解代碼就足以讓它重新開始繪製,一旦開始重新繪製,它可能會好。問題是什麼時候它甚至不開始重新繪製。 – nnnnnn

相關問題