如何在javascript中编写正在进行的进程?

时间:2011-09-17 08:06:49

标签: javascript

假设我有一个数组,用户一次只能从一个网站输入数据。因此阵列一次增长一个。我想要一个持续的进程,它将获得数组的长度,如果它是正数,则打印然后拼接数据,setTimeout(1000),然后继续运行。因此,如果数组没有任何内容,则不会执行任何操作,并且无论何时将某些内容放入数组中,都必须出现因为数组是非空的。

那我怎么能做这样的事呢?

很抱歉,如果解释令人困惑......

我尝试使用while(true),但这只是占用内存所以我不确定还能做什么,(线程?)。请帮助。 THX!

我不是在寻找一个事件监听器。我想以一定间隔存储数据和释放。事件监听器填满了数组,但我知道如何做到这一点。我不知道循环将如何执行。

5 个答案:

答案 0 :(得分:0)

某些事件处理程序怎么样?如果我正确理解您的问题,您不需要正在进行的流程。您希望使用event handler对用户输入做出反应。

答案 1 :(得分:0)

Google在其异步Analytics脚本中使用智能阵列推送机制:

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'xxx-yyy-zzz']);
  _gaq.push(['_trackPageview']);

如果尚未处理先前的数据,则会创建一个空队列数组或使用现有数组。

主脚本http://www.google-analytics.com/ga.js包含一个setTimeout循环,用于检查队列数组是否包含数据,如果是,则处理它。

您可以使用类似的机制:只需检查队列中的新元素,处理它们,并在完成后清除队列数组。

答案 2 :(得分:0)

可以使用setTimeout和全局数组来实现你想要的,或者你可以用现代的方式来实现。

德里克!!认识JavaScript jQuery event object!这是它这个时代最好的!庄稼的奶油!人类成就的奇迹! 它可以帮助您制作网络应用。

这是一个tutorial。并概述了您可能想要的内容:

$(document).ready(function() {
   $('input[text]').change(function() {
     alert($(this).attr('value'));
   });
 });

答案 3 :(得分:0)

还是像这样的递归计时器?

var z=[ 'Mazda',
        'Totyota',
        'Honda',
         'Suzuki'
      ];

var job = function()
{
   document.write(z.pop());
   setTimeout(job, 1000); // run every second
}();

答案 4 :(得分:0)

好的,for循环可以帮到你 (您的数组存储在window.yourArray):

for (var i=0; i < window.yourArray.length; i++){
    alert(window.yourArray[i]);
}

或更简单:

for (a in window.yourArray){
    alert(a);
}

这些循环比你的while(true)循环要好得多,因为它们具有有限的生命周期(基于数组中元素的数量)。您应该使用setTimeout定期运行其中一个循环。