簡體   English   中英

如何委派某些javascript(呈現頁面)以具有比其他javascript(獲取數據)更高的重要性

[英]How do I delegate some javascript (rendering the page) to have higher importance then other javascript (fetching data)

現在,我在啟動時使用的移動網絡應用會在午餐時與一些API對話。 這些與呈現頁面的javascript交織在一起。

當它們同時觸發時,頁面渲染變得非常不穩定,這可能是因為渲染使用硬件加速,或者當同時運行太多JS時,這在移動設備(iphone)上是正常的。

我想以某種方式設計應用程序,如果用戶采取行動來更改頁面的呈現方式,或者觸發了與UI相關的任何操作,則它會優先於其他JS。

我希望這種體驗要快速而又迅速,即使它需要花費一些時間(與api交談)也可以。

任何想法如何實現這樣的目標?

謝謝!!!

給定的javascript線程可以無中斷地運行,因為javascript是單線程的(Web Workers除外,但我不認為這就是我們在這里所說的)。

這樣,確定工作優先級的唯一方法是創建要完成的工作隊列。 從隊列中執行一個工作單元,然后確定下一步要在隊列中執行的工作單元。 如果您要完成的所有工作都在隊列中,則可以決定何時將下一個工作單元從隊列中取出時應該先完成哪些項目。

工作單元越小/越短,任務之間的切換就越精細。 如果使用setTimeout()在隊列中的每個項目之間間隔很短的時間,則可以運行任何UI事件(例如單擊或其他計時器)。

您甚至可以觸發一堆ajax請求,隨着響應的到來,您可以將響應放入隊列中,以便在有時間時進行解析/處理。

出現斷斷續續行為的原因是,您可以限制有多少個未完成的Ajax請求。

您可以編寫一個javascript函數/對象來管理Ajax請求的優先級隊列以及每個請求的回調。 按照隊列中的優先級/位置順序觸發請求。 具有較高優先級的新請求將以這種方式先於次要的請求執行,即使以后可能會再請求它們,例如添加了jquery Ajax Manager插件 +優先級。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM