Я имею маршрутасинхронные операции в nodejs выразить
app.get('/posts', function (req, res) {
res.json([
// data
]);
// what would happen to the code below
// Suppose it is processing a million records
processMillionRecords();
});
function processMillionRecords() {
// process million records
}
После того, как ответ посылают, другая функция вызывается, которая является весьма дорогостоящей операцией. Что произойдет, если это будет продолжаться? Есть ли какие-либо последствия?
Я знаю, что идеальный способ сделать это - использовать фоновые процессы. Поэтому я заменил его ниже.
res.json([
// data
]);
var child = require('child_process');
child.fork('worker.js');
// worker.js
function processMillionRecords() {
// process million records
}
Какой из них более предпочтительный и в каких случаях?
Как развернуть другой процесс * не * используя фоновые процессы? – Pointy
Да, вы правы, может быть, я должен правильно перефразировать вопрос. – Madhusudhan
ОК - хорошо, я не думаю, что с использованием фонового процесса есть что-то неправильное, если у вас все в порядке с накладными расходами (и в узле это не похоже на то, что у вас много вариантов). Накладные расходы не очень важны, если вы действительно занимаетесь большим объемом работы, так как вилка происходит только один раз (на каждую рабочую партию). – Pointy