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

如何用javascript编写正在进行的流程?,javascript,Javascript,假设我有一个数组,用户一次输入一个网站的数据。因此,阵列一次只增长一个。我需要一个正在进行的过程,该过程将获得阵列的长度,如果它是正值,则打印并拼接数据,设置TimeOut1000,然后继续运行。因此,如果数组没有任何内容,则什么也不做,并且每当有内容放入数组中时,就必须拿出一些内容,因为数组是非空的 那我怎么能做这样的事呢 var z=[ 'Mazda', 'Totyota', 'Honda', 'Suzuki' ]; var j

假设我有一个数组,用户一次输入一个网站的数据。因此,阵列一次只增长一个。我需要一个正在进行的过程,该过程将获得阵列的长度,如果它是正值,则打印并拼接数据,设置TimeOut1000,然后继续运行。因此,如果数组没有任何内容,则什么也不做,并且每当有内容放入数组中时,就必须拿出一些内容,因为数组是非空的

那我怎么能做这样的事呢

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

var job = function()
{
   document.write(z.pop());
   setTimeout(job, 1000); // run every second
}();
抱歉,如果解释令人困惑

我试着使用whiletrue,但那只会消耗内存,所以我不知道还能做什么,threads?。请帮忙。谢谢


我不是在找事件侦听器。我想每隔一段时间存储数据并发布。事件侦听器将填充数组,但我知道如何执行此操作。我不知道循环将如何执行。

一些事件处理程序怎么样?如果我正确理解了你的问题,你就不希望有一个持续的过程。您希望对用户输入做出反应。

谷歌在其异步分析脚本中使用智能阵列推送机制:

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'xxx-yyy-zzz']);
  _gaq.push(['_trackPageview']);
这将创建一个空队列数组,如果以前的数据尚未处理,则使用现有队列数组

主脚本包含一个setTimeout循环,用于检查队列数组是否包含数据,如果包含,则对其进行处理

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

您可以使用setTimeout和全局数组来实现所需的功能,也可以采用现代方式

德里克!!见见JavaScript!这是它这个时代最好的!精华!人类成就的奇迹!它将帮助你制作一个网络应用程序

这是一个例子。以及你可能想要的东西的大纲:

$(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循环将帮助您 您的数组存储在Windows中。您的数组:


这些循环比whiletrue循环好得多,因为它们的使用寿命是有限的,取决于数组中的元素数量。您应该使用setTimeout定期运行其中一个循环。

您不能将事件处理程序附加到用户用于提供数据的控件上吗?嘿,如果确实需要,您可以使用事件侦听器来维护全局数组。只需记住使用window[variable_name]获取和设置!我对事件监听器并不感兴趣,我已经知道这一点,我需要知道如何编写正在进行的循环。因为我不会回显响应,而是将它们排成一列,然后每隔一段时间回显一次,所以我需要一个持续的过程来完成这项工作。我感兴趣的不是真正的事件侦听器,我已经知道了这一点,我需要知道如何编写这个持续的循环。因为我不会回显响应,而是将它们排队,然后每隔一段时间回显一次,所以我需要一个正在进行的过程来完成这项工作,但不知道这将如何工作,因为我的函数被封装在函数${jQuery.fn.extend中{…而且我正在使用淡出并尝试对数组拼接超时…它在你的插件中仍然可以很好地工作。请记住,如果你在插件中创建许多“线程”,每个线程都有自己的设置超时,那么你的应用程序可能会很慢。必须有一种更简单的方法来实现你想要的。如果我的解释不清楚,很抱歉正在运行,但我需要一个循环/递归/进程,可以告诉它是否已经在运行,这样一个事件就不会触发它,如果它已经在运行,超时也在循环内,比如在每个警报之间
for (a in window.yourArray){
    alert(a);
}