2014-04-24 72 views
0

我有一個java代碼,一次處理一個csv文件1行。我想用當前正在處理的記錄來更新用戶,例如1000個完成中的1個,1000箇中的3個完成,等等。這是我迄今爲止編寫的一段代碼。第一個調用是PROCESS FILE,第二個調用重複3秒是GET CURRENT RECORD。並行ajax調用 - 行爲像多線程系統

$.ajax({ 
     type : "POST", 
     url : "/service_member_import.jsp", 
     aysnc: false, 
     data: { 
      "action":"processrecords", 
      "ms": new Date().getTime() 
     }, 
     dataType : 'html', 
     success : function(data) { 
      console.log("file processed"); 
     }, 
    error: function(){ 
      alert("Error retrieving data"); 
     } 
    }); 

setInterval(update, 3000); 
update(); 

function update() { 
     $.ajax({ 
      type : "POST", 
      url : "service_member_import.jsp", 
      data: { 
       "action":"getStatus", 
       "ms": new Date().getTime() 
      }, 
      dataType : 'html', 
      success : function(data) { 
       console.log("current data\t"); 
       console.log(data); 
      }, 
     error: function(){ 
       alert("Error retrieving data"); 
      } 
     }); 

} 

目前的行爲是處理所有的記錄(即第一個Ajax調用),然後給了我處理的當前記錄(即第2個Ajax調用)。即兩個Ajax調用不會並行發生。

如果您認爲有更好的方法來實現這一點,請給我建議。或者,如果我們可以使這些Ajax調用平行。

回答

0

我終於想通了,這兩個Ajax調用正在parralely製造。只是記錄數量太少了,因此第一次ajax調用幾乎立即完成,並且感覺到第二次ajax調用僅在最後完成。

只要我增加記錄到30,000。我可以看到第二個Ajax調用在第一個Ajax調用之間中斷了。

謝謝你的幫助:)

0

看起來直到第一個完成你的服務器擋住了第二請求......

你需要一個無阻塞或線程服務器這個工作。

您正在使用什麼平臺?(的Ruby/Rails,節點/帆,PHP /蛋糕,Python的/ Django的等)

+0

其前端+ Java在後端引導。用於交互jquery。我沒有使用節點/ PHP或任何東西。如果你建議我node.js你能告訴我,我的java代碼如何與node.js集成?自昨天以來,我一直試圖在node.js上工作,最後放棄使用2個Ajax調用。 – user1908568

+0

我剛剛意識到你提到了Java。好吧,看起來您的Java服務器正在以單線程/阻塞的方式運行。我不熟悉Java服務器,對不起。至於Node.js,它並不直接與Java集成。 Java和JavaScript甚至都不相同。但我確實認爲Node.js會是您做什麼的不錯選擇。如果您想開始使用Node.js,請查看[Sails!](http://sailsjs.org) – InternalFX

+0

是的,我已經在java中編寫了處理代碼+驗證+數據庫代碼。所以它只是一個調用我的java方法。但現在這個調用我想甚至更新正在處理的當前記錄的用戶。另外,如果我使用node.js生病了必須將我的java代碼轉換爲js? – user1908568