我如何在javascript中编写一个正在进行的过程



假设我有一个数组,用户每次从一个网站输入一个数据。所以数组一次增长一个。我想要一个正在进行的进程,将得到数组的长度,如果它是正的,打印,然后拼接数据,setTimeout(1000),然后继续运行。如果数组什么都没有,就什么都不做,当有东西被放进数组的时候就会有东西出来因为数组是非空的。

我该怎么做呢?

如果我的解释让你困惑了,我很抱歉…

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

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

事件处理程序呢?如果我没理解错的话,你不想要一个持续的过程。您希望使用事件处理程序对用户输入作出反应。

Google在async Analytics脚本中使用了一个智能数组推送机制:

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

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

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

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

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

德里克! !来看看JavaScript jQuery事件对象吧!它是那个时代最好的!精华!人类成就的奇迹!

这里有一个教程。以及你可能需要的内容的大纲:

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

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

var z=[ 'Mazda',
        'Totyota',
        'Honda',
         'Suzuki'
      ];
var job = function()
{
   document.write(z.pop());
   setTimeout(job, 1000); // run every second
}();

那么,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定期运行其中一个循环。

最新更新