Я хочу обобщить данные, которые производятся асинхронно (в node.js). Как бы вы сделали это в потоковом режиме?Как накапливать асинхронные данные?
Например,
function test(){
var accumulator = 0;
for(int i= 0; i<100; i++){
// non blocking function producing value
getasyncdata(i, function(value){
// this is spread over 3 lines to simulate non atomic operation.
tmp = accumulator;
tmp = tmp + value;
accumulator = tmp;
});
}
console.log(accumulator);
}
, как я вижу его GetData обратных вызовов будут называться 100 раз в parrallel ... и есть Hight шансы аккумулятор обыкновения быть суммой 100 значений, так как обратный вызов не атомный (или это?) ...
Как вы думаете?
Узел однопоточный, поэтому ваши операции асинхронного сканирования фактически не выполняются в одно и то же время. – Blender
С другой стороны, 'аккумулятора ', вероятно, будет 0 в то время, когда вы запускаете его консоль, поскольку функция isync – adeneo
Кроме того, если вы используете кластер, то операции могут фактически выполняться в одно и то же время. См. Http://nodejs.org/api/cluster.html – Ryan