2017-07-11 3 views
0

JavaScriptで私は動作しますが、私は、イベントを送出し、それがすべてのキューアップ、そしてリスナーを持っている、と(それがキュー内のすべてのイベントを実行させることができ、最小限の方法がある。このリスナーを追加した後で、javascriptに既存のイベントを実行する方法が組み込まれていますか?

window.addEventListener("aaa", event => { 
    alert("hddi"); 
}); 

window.dispatchEvent(new CustomEvent("aaa", {detail:1})); 

行いますFIFOのように)

window.dispatchEvent(new CustomEvent("aaa", {detail:1})); 
window.dispatchEvent(new CustomEvent("aaa", {detail:1})); 
window.dispatchEvent(new CustomEvent("aaa", {detail:1})); 
window.addEventListener("aaa", event => { 
    alert("hddi"); // alerts 3 times 
}); 

私はあらゆるライブラリを避け、カスタムコードを最小限に抑えるために探しています。これを行うネイティブな方法はありますか?すぐこれらのイベントが発生したとき添付イベントハンドラにイベントを送出

おかげ

+2

これを処理するネイティブな方法はないと思います。私はあなたがこれを処理するために何らかの種類のカスタムキューイング機構を実装しなければならないと思います。 –

+0

あなたはどのようなより高いレベルの問題を解決しようとしていますか? – charlietfl

答えて

0

JavaScriptを。イベントの束を待ち行列に入れ、ハンドラをアタッチした後、キューを処理させるネイティブな方法はわかりません。

var aaa_queue = []; 
 

 
aaa_queue.push({ detail: 1 }); 
 
aaa_queue.push({ detail: 2 }); 
 
aaa_queue.push({ detail: 3 }); 
 

 
var aaa_handler = function(obj) { 
 
    console.log(["Now handling:", obj]); 
 
}; 
 

 
var process_queue = function(queue, handler) { 
 
    while(queue.length > 0) { 
 
    handler(queue.shift()); // shift() removes and returns the first item 
 
    } 
 
}; 
 

 
process_queue(aaa_queue, aaa_handler);

-1

あなたはこれを試すことができます:

は何あなたが探していることはシンプルなキュー、プラス各項目を処理するためのハンドラ関数である

window.addEventListener("aaa", event => { 
    alert("hddi"); 
}); 
function dispatch(event, params, times) { 
    for(var i = 0; i < times; i++) { 
     window.dispatchEvent(new CustomEvent(event, params)); 
    } 
} 
dispatch("aaa", {detail: 1}, 5); 

それが役に立てば幸い!

関連する問題