2012-09-10 34 views
-3

JavaScript中是否可以使用多線程? 這是我的JSP頁面的JavaScript部分。 我有這4條件。如果條件將運行4次診斷測試,則在4處。但我想同時運行它們。可能嗎?javascript中的多線程

if(document.getElementById("VoiceNode").style.display=="block" && document.getElementById("voiceTest-0").style.display=="none"){ 
        alert("calling voice test");   
        document.getElementById("voiceTest-0").style.display="block"; 
        kbdOnnetVoiceTestAjaxCall.init('<%=contextPath%>','<%=Service.getServiceID()%>','<%=Service.getInventory().getTelephoneNumber()%>','<%=Service.getInventory().getPort()%>','<%=Service.getInventory().getDslam()%>','<%=Service.getInventory().getSlot()%>','${KBDResultsTimeout}','true') 
        document.getElementById("moreVoice").style.display="block"; 
        alert("exiting voice test"); 
       } 
       if(document.getElementById("sessionTest-0").style.display=="none"){ 
             document.getElementById("sessionTest-0").style.display="block"; 
        kbdOnnetSessionTestAjaxCall.init('<%=contextPath%>','<%=Service.getServiceID()%>','<%=Service.getInventory().getTelephoneNumber()%>','<%=Service.getInventory().getPort()%>','<%=Service.getInventory().getDslam()%>','<%=Service.getInventory().getSlot()%>','${KBDResultsTimeout}','true') 
        document.getElementById("moreSession").style.display="block"; 
            } 
       if(document.getElementById("lineTest-0").style.display=="none"){ 

        document.getElementById("lineTest-0").style.display="block"; 
        kbdOnnetLineTestAjaxCall.init('<%=contextPath%>','<%=Service.getServiceID()%>','<%=Service.getInventory().getTelephoneNumber()%>','<%=Service.getInventory().getPort()%>','<%=Service.getInventory().getDslam()%>','<%=Service.getInventory().getSlot()%>','${KBDResultsTimeout}','true') 
        document.getElementById("moreLine").style.display="block"; 
            } 
       if (document.getElementById("syncTest-0").style.display=="none"){ 

        document.getElementById("syncTest-0").style.display="block"; 
        kbdOnnetSyncTestAjaxCall.init('<%=contextPath%>','<%=Service.getServiceID()%>','<%=Service.getInventory().getTelephoneNumber()%>','<%=Service.getInventory().getPort()%>','<%=Service.getInventory().getDslam()%>','<%=Service.getInventory().getSlot()%>','${KBDResultsTimeout}','true') 
        document.getElementById("moreSync").style.display="block"; 
             } 
+0

兩個字。網絡工作者。 http://www.html5rocks.com/en/tutorials/workers/basics/ – starbeamrainbowlabs

+2

@starbeamrainbowlabs,那些是兩個字 – Alexander

+0

@Alexander哎呀! :)編輯。 – starbeamrainbowlabs

回答

1

沒有

可以重新排列在事件循環的執行順序。但他們不可能同時發生。

+0

網絡工作者呢? http://www.html5rocks.com/en/tutorials/workers/basics/ – starbeamrainbowlabs

+0

Web工作人員是瀏覽器功能,而不是與JavaScript相關。當你創建一個新的Web工作者時,_browser_(不是javascript自己)在你的「窗口」線程的獨立線程中運行它。 –

+0

我一直認爲你可以使用web worker來多線程你的javascript。 – starbeamrainbowlabs

1

JavaScript是單線程的。但是

  • 您可以使用setTimeout來模擬setting tasks aside的「穿線」。這通常用於在密集操作期間防止「UI阻塞」。
  • 或最近使用過WebWorkers