Здравствуйте. Есть массив. Для каждого элемента массива нужно асинхронно, без ожидания окончания обработки вызвать event. Для этого я решил использовать AsyncEventEmitter, вот что получилось, на примере:
for(var i=0; i<20; i++) {
events.emit('test', '...');
}
events.on('test', function(data) {
console.log('START');
var sl = sleep(random.integer(1000, 5000));
sleep(sl);
console.log('END AFTER ' + sl);
});
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds) break;
}
}
К сожалению это не работает, следующий евент вызывается только после окончания предыдущего. Это меня совсем не устраивает. Причем даже если убрать эвенты, а обычный for цикл заменить async'овской библиотекой - все равно ничего. Я хоть убейся не понимаю, как заставить его вызвать сразу все эвенты одновременно. sleep() используется чисто для имитации долгой обработки, представляет собой цикл.