首頁  >  文章  >  web前端  >  如何解決多個ajax頁面請求,頁面loading阻塞問題

如何解決多個ajax頁面請求,頁面loading阻塞問題

一个新手
一个新手原創
2017-10-16 09:31:052551瀏覽

在專案中碰到多個ajax加載,loading加載出現問題,沒有能第一時間加載出來。

主要原因是因為:瀏覽器的渲染(UI)執行緒和js執行緒是互斥的,在執行js耗時操作時,頁面渲染會被阻塞掉。當我們執行非同步ajax的時候沒有問題,但當設定為同步請求時,其他的動作(ajax函數後面的程式碼,還有渲染線程)都會停止下來。即使我的DOM操作語句是在發起請求的前一句,這個同步請求也會「迅速」將UI執行緒阻塞,不給它執行的時間。這就是程式碼失效的原因。

#1.是把同步改寫成異步,並且把多個ajax請求嵌套在一起。 ,在成功之後再去呼叫另外一個ajax請求,這樣子就不會因為第一個請求先結束,把第二個請求loading給屏蔽掉。

2.是使用jquery的Deferred對象,jQuery在1.5版本之後,引入了Deferred對象,提供的很方便的廣義異步機制。

3.用定時器setTimeout() 或setinterval()函數去定時查看是否ajax都回傳成功。

以上是如何解決多個ajax頁面請求,頁面loading阻塞問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn