假设我有一个数组,用户每次从一个网站输入一个数据。所以数组一次增长一个。我想要一个正在进行的进程,将得到数组的长度,如果它是正的,打印,然后拼接数据,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
定期运行其中一个循环。