2014-04-24 41 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