2011-09-17 6 views
0

私は、ユーザーがウェブサイトからデータを1つずつ配置する配列を持っているとします。配列は一度に1つずつ増え続けます。私は、配列の長さを取得し、それが正であれば、setTimeout(1000)というデータを出力してスプライスし、実行し続けるプロセスを継続したい。配列に何も付いていない場合、何も行われず、何かが配列に挿入されるたびに配列が空でないため何かが出てきます。javascriptで進行中のプロセスを作成するにはどうすればよいですか?

どうすればこのようにすることができますか?申し訳ありません

説明が混乱している場合...

(スレッド?)、私はしばらくの間(true)を使用してみましたが、私は行うことが他に何かわからないので、それは単にメモリを食べます。 PLZヘルプ。どうも!

私はイベントリスナーを探していません。私はデータを保存し、ある間隔で解放したい。イベントリスナーは配列を塗りつぶしますが、私はこれを行う方法を知っています。ループがどのように実行されるのか分かりません。

+1

ユーザーがデータを提供するために使用するコントロールにイベントハンドラを添付できません。 – albertjan

答えて

0

いくつかのイベントハンドラはどうですか?私はあなたの質問を正しく理解すれば、進行中のプロセスを望んでいません。あなたはevent handlerでユーザー入力に反応したいと思っています。

+0

私が興味を持っているイベントリスナーではありませんが、私はすでにこれを知っています。私は応答をエコーするつもりはなく、それらを待ち行列に入れて、頻繁にエコーするので、これを行うために進行中のプロセスが必要です。 – Derek

0

Googleはその非同期AnalyticsスクリプトでSmartアレイプッシュ機構を使用しています。

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

これは、空のキューの配列を作成したり、以前のデータがまだ処理されていない場合は、既存のものを使用しています。

メインスクリプトhttp://www.google-analytics.com/ga.jsには、キュー配列にデータが含まれているかどうかを確認するsetTimeoutループが含まれています。

同様のメカニズムを使用することもできます。キュー内の新しい要素をチェックして処理し、完了したらキュー配列をクリアするだけです。

+1

読みやすくなっているものはありますか? – Derek

0

setTimeoutを使用して、あなたが望むものを達成するためにグローバル配列を使用するか、現代的なやり方で実現できます。

デレク! JavaScript jQuery event objectをご覧ください!それは、その年齢の中でも最高です!作物のクリーム!人間の業績の不思議! ウェブアプリの作成に役立ちます。

ここにはtutorialがあります。あなたが望むものの概要:

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

本当に必要だった場合は、イベントリスナーを使用してグローバル配列を維持できます。ウィンドウ["variable_name"]を使って取得して設定することを覚えておいてください! –

+0

私が興味を持っているイベントリスナーではありません。私はすでにこれを知っています。これは、ループを書く方法を知る必要があります。私は応答をエコーするつもりはなく、むしろそれらをキューに入れて、それほど頻繁にそれらをエコーするので、私はこれを行うために継続的なプロセスが必要です – Derek

0

このような再帰タイマーですか?

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

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

これにどのようにうまくいくのかわからない私の機能は、 (関数($){ jQuery.fn.extend({...また、私はfadeOutを使用しており、配列のスプライスをタイムアウトしようとしています...)ugh – Derek

+0

プラグインでうまく動作する可能性があります。あなたのプラグインに多くの「スレッド」を作成している場合は、それぞれ独自のsetTimeoutを使用すると、アプリケーションが遅くなる可能性があることを覚えておいてください。 –

0

[OK]を、その後、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を使用して、これらのループの1つを定期的に実行する必要があります。

+0

申し訳ありませんが、混乱しているが、すでに実行中かどうかを判断できるループ/再帰/プロセスが必要です。すでに実行中の場合はイベントがトリガーされず、各アラート間のようにループ内にもタイムアウトがあります – Derek

関連する問題