Да, это так.
В NodeJS вы можете использовать fork () или кластер api для запуска параллельных задач и прослушивания сообщений от главного узла, это не совсем поток, nodeJS - это монопоточная версия, вы будете создавать новые процессы.
В браузере вы можете использовать webworkers , это похоже на темы на других языках. WebWorkers не поддерживаются полностью в некоторых мобильных браузерах.
РЕДАКТИРОВАТЬ 1: конечно, вот пример nodeJS, вы должны будете выполнить часть «ожидания» самостоятельно, но у вас есть концепция.
const cluster = require('cluster');
if (cluster.isMaster) {
const nodes = 4;
const limit = 40000;
const nEachNode = (limit / nodes) |0;
for (let i = 0; i < nodes; i++) {
let worker = cluster.fork();
worker.send({ start: nEachNode * i, end: nEachNode });
worker.on('message', handleResponse);
}
let total = 0;
function handleResponse(response) {
total += response;
console.log(`worker answered, total: ${total}`);
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
console.log(`Worker ${process.pid} started`);
process.on('message', start);
function start(conf) {
let cumulative = 0;
for (let i = conf.start; i < conf.start + conf.end; i++) {
cumulative += i;
}
process.send(cumulative);
process.exit();
}
}