簡體   English   中英

如何在Jquery中的后台運行代碼塊

[英]How to run a block of code in background in Jquery

我正在使用Jquery Mobile和PhoneGap構建移動應用程序。 我正在使用單頁模型 ,我有類似index.html,login.html等

我編寫了一個javascript,每隔5分鍾就會使用setInterval()與服務器端聯系以獲取新消息,並且所有這些都可以在后台運行良好,而不會干擾用戶正在做的事情。

我想問一下是否可以在全局范圍內聲明並運行這段代碼,而不必在每個html頁面中重新聲明它。

注意:我在jQuery Mobile的鏈接中使用rel="external" ,這會導致每個頁面在用戶導航到頁面時刷新。

我相信你主要擔心的是當另一個腳本被加載時它會覆蓋前一個計時器,所以如果剩下一分鍾直到下一次調用,現在有5個。為了克服這個障礙你可以按順序添加一種邏輯到你的間隔在一天中的特定時間運行,例如9.00,9.05,9.10 ...這樣,每次執行腳本時都應該清除InterInterval並重置它,以便下次執行代碼時是針對瀏覽器計算的標准時間約會時間。

我想你可以使用web worker來實現這個目的,它們可以在全局環境中獨立工作,就像線程一樣,它們非常高效,甚至可以讓你執行I / O.

請檢查此鏈接,希望這可以幫助您

https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers

https://groups.google.com/forum/#!topic/phonegap/SMMEwYXUjCU

如果在項目中使用MVC的概念,那將更加可行。 嘗試創建其他類使用的基類。 你也可以使用jquery widget的概念

我認為這應該有效......

  1. 創建一個頁面(母版頁),它唯一的工作就是運行一個計時器......
  2. 在母版頁上添加iframe(設置為100%可見性)並將iframe指向其他頁面...

這將是什么,是每次你的一個頁面(在iframe中)回發,主頁面將保留在內存中,計時器將不會重新加載...

示例母版頁。

<html>
 <head>
  <script>
   function checkMessages() {
    // check messages here
    setInterval(...);
    }
  </script>
 </head>
 <body onload="checkMessages();">
     <iframe id="iframe1" src="subpage.aspx" width="100%" scrolling="auto" frameborder="no" marginheight="0" marginwidth="0" height="100%"></iframe>
 </body>
</html>

我能夠使用Android后台服務來實現我想要的。 我在PhoneGap上使用了一個插件。 對於那些想要使用類似技術的人,你可以在phonegap-service-tutorial-part-1上獲得有關插件的信息

暫無
暫無

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

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