在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
});
我希望避免任何库,只是最小化自定义代码。是否有本地方法可以做到这一点?
由于
答案 0 :(得分: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 :(得分:-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);
希望它有所帮助!