大家好:
    最近在做一个新任务提醒功能;如:网站后台每天有好多新订单,员工查询后把所有的订单查询出来,如果是上午10:00点击的查询按钮,当然也就把最新的订单给查询出来了(查询10:00前的未处理单子),现在要做一个提醒功能,员工在处理每个订单时,不用再查询,直接把10:00后最新的订单数量提示出来。员工要是再点击查询按钮,查询订单,则提示的最新订单应该为0;如果再有新订单来了,则会把刚才点击查询按钮时间后的订单数量查询显示出来。    此时遇到一个问题,设置10秒去数据库查询最新订单(点击查询按钮后的新订单),第一次去点击查询按钮,调用ajax去数据库查询,在后台写了一个打印时间的语句,检测一下确实是10秒访问一次;
   
    但是我第二次点击查询按钮,再检测后台打印时间语句,发现少于10秒就访问一次后台,点击第三次发现就平凡访问后台,这样数据库哪受的了啊?
    实现代码如下:
    var time=10*1000//单位时间调用ajax进行查询
    function awakeNewTask(){
sendRequest('/awakeNewTask.do');
setTimeout("awakeNewTask()",time);
    }
    为什么访问点击第二次,或者第三次查询新订单,就不会以10秒钟为单位调用ajax了呢?
    是不是有好几个线程了呢?
                                     在此感谢大家,祝工作顺利,家人身体健康!

解决方案 »

  1.   

    不是你给的代码的问题,是查询按钮事件处理代码的问题。
    等于你给的这片代码执行多次了,有多个function实例,每个都轮流10秒查数据库。
      

  2.   

    var time=10*1000//单位时间调用ajax进行查询
    setTimeout("awakeNewTask()",time);
        function awakeNewTask(){
        sendRequest('/awakeNewTask.do');
        
        }
      

  3.   

    ajax根本就没有多线程 因为他是调js的  js是阻塞方式运行的 ajax  Asynchronous JavaScript and XML  主要是异步调用不是真正的多线程
    处理订单 建议监视数据库的增加操作 没有一直访问数据库的,,,,,,,,,,,那哪能受了啊,,,,,,10秒一次10秒一次的,,,,,,,况且订单很多,,,,,,,,
    定义一个状态State.a,,,如果执行的orderService.add(Order order)方法则这个State.a=1,可以用ajax读这个状态 然后做出相应处理
      

  4.   

    setInterval用这个可以搞定。谢谢大家!
      

  5.   

    setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。
    谁说js没有多线程了,明明有的,鄙视楼上