2014-02-12 8 views
0

У меня есть код, который проверяется для каждого пользователя в массиве. Если обнаружено, корпус коммутатора будет работать соответствующим образом.Параллельное выполнение в узле

var users = ["A","B"]; 
function searchUser() { 
for (var j = 0; j < users.length; j++) { 
     execute(users[j]); 
    } 
} 

function execute() { 
switch (selectUser) { 
      case "A": 
      { 
       return new A(); 
       break; 
      } 
      case "B": 
      { 
       return new B(); 
       break; 
      } 
      ............ 
      } 
} 

Как я могу заставить его работать параллельно. Теперь Im получает вывод A(), а затем B(). Но я хочу, чтобы это тоже произошло наоборот.

ответ

0

Этот код выглядит интенсивным и, вероятно, не имеет ввода-вывода. Узел представляет собой однопоточную модель, поэтому параллельная обработка не может выполняться на одном ядре (для нескольких ядер требуется запуск нескольких процессов узла). На одном ядре пропускная способность увеличивается только в том случае, если у вас задействовано IO. Если в вашем нынешнем коде не участвует IO, вы можете ничего не получить.

1

Хотя вы не можете заставить их работать по-настоящему параллельно, вы можете сделать его более асинхронным с использованием асинхронного модуля: https://github.com/caolan/async.

+0

Где я должен включить async в свой код? – user3180402

+0

Если вы хотите вызвать 'execute' для каждого элемента массива' users', попробуйте что-то вроде async.parallel (users.map (function (user) {return function (callback) {execute (user)};})); Вам также нужно будет установить async с npm и вызвать 'require ('async')' - см. Документацию в ссылке, которую я отправляю для получения дополнительной информации. –

+0

var async = require ('async'); var users = ["A", "B"]; функция выполнить (selectUser) { переключатель (selectUser) { кейс "A": { console.log ("Helloo"); break; } кейс "B": { console.log ("Hiii"); break; } }} async.parallel (users.map (функция (пользователь) {Функция возврата (обратный вызов) {выполнить (пользователь)};})) – user3180402

Смежные вопросы