Я довольно новичок в node.js, так любезно прощаю мое невежество, что я пытаюсь сделать, это цикл через массив серверов и выделить максимум 60 задач каждому серверу , Однако количество входящих заданий может быть от 10 до 200.проблема с несколькими асинхронными вызовами в node.js
Так что я хочу назначить 60 задач первому серверу, затем следующие 60 задач на второй сервер и так далее.
У меня есть следующая функция, которая, кажется, идут ужасно неправильно ..
function mount_the_tasks(server_info){
async.forEach(server_info, function(single_server, callback1){
Tasks.find({task_status : 0}).limit(single_server.can_perform_tasks).exec(function(err, tasks_for_server){
async.forEach(tasks_for_server, function(single_task, callback2){
Tasks.findOneAndUpdate({_id : single_task._id}, {task_status : 1, server_id : single_server.instance_id}, function(err, numberAffected){
console.log(single_task.task_id+' -> '+single_server.instance_id);
callback2();
});
}, function(err){
console.log('Moving to next server!');
callback1();
});
});
}, function(err){
console.log('all done!');
});
}
Пожалуйста расшириться на * «который, кажется, идет ужасно неправильно» * –
Ну я сделал простой тест, с 70 задачами, идеальная логика назначения 60 к первого сервера и 10 ко второму серверу, однако результат, который я получаю, - это первые 60, назначенные серверу 4, а остальные 10 - нетронутыми. Еще одна вещь, которую я заметил, - это то, что каждому из серверов присваивается 60 задач, что означает, что Tasks.find со статусом 0 возвращает неправильный набор результатов. – dylanfa88
Что такое 'async'? в async lib я знаю, у меня нет метода forEach. Вместо этого у каждого есть. –