{
let event_manager = (arg1,arg2) => {
let events = []
let add_event = (event) => {
events.push(event)
}
let process_events = () => {
let event_results = []
for(let edx = 0; edx < events.length; edx++) {
let next_event = events[edx]
let event_result = next_event(arg1,arg2)
event_results.push(event_result)
}
return event_results
}
return {push_event:add_event, process_it_all:process_events}
}
let some_funcs = [event_manager(3,5), event_manager(2,4)]
let some_data = [1, 2, 3]
for(let idx = 0; idx < some_data.length; idx++) {
let the_data = some_data[idx]
let event_handler = (x,y) => x*y+the_data
for(let fdx = 0; fdx < some_funcs.length; fdx++) {
let the_func = some_funcs[fdx]
the_func.push_event(event_handler)
}
}
let all_results = []
for(let fdx = 0; fdx < some_funcs.length; fdx++)
all_results.push(some_funcs[fdx].process_it_all())
return all_results
}