/ / Як додати мільйони чисел у nodejs без блокування подальшого виконання? - javascript, node.js, неблокуючий

Як додати мільйони номерів в nodejs без блокування подальшого виконання? - javascript, node.js, неблокірування

Я намагаюся реалізувати рішення проблеми у вузлі js, тобто:

Наприклад:

Ура: http://localhost/sum/5

Повинен повертатися

"Сума чисел від 1 до 5: 15"

Якщо

URL: http://localhost/sum/100

Відповідь має бути:

"Сума чисел від 1 до 100: 4950"

Параметр може бути величезним:

наприклад:

URL: http://localhost/sum/100000000 (десять мільйонів)

У жодному разі сервер повинен застряг обробляти тільки один запит.

Я читав де-небудь setImmediate може допомогти.

Відповіді:

1 для відповіді № 1

Сума 1 + 2 + 3 + ... + n може бути представлена ​​n (n + 1) / 2. Див це посилання для отримання додаткової інформації.


1 для відповіді № 2

Загалом, коли ви хочете не блокувати виконання, ви можете використовувати модуль child_process: https://nodejs.org/api/child_process.html

Приклад виглядатиме приблизно так:

//fork a new process
var cp = require("child_process");
var child = cp.fork("./intensiveTask.js",[],{});

//listen for messages from the child process
child.on("message", function(ret) {
console.log("child process has finished", ret.data);
//kill the child process
child.kill();
});

//send a message to the child process
child.send({msg: "Foo"});

Ось код дочірнього процесу (intensityTask.js)

process.on("message", function(data) {
//do the intensive work here
var output=data.msg + " Bar";
//send the output back to the parent
process.send({msg: output});

});