Node.js 处理并发的主要方式是通过异步编程和非阻塞I/O。这使得 Node.js 能够在单个线程上同时处理多个任务,从而实现高并发。以下是一些处理并发的方法:
fs.readFile('file.txt', 'utf8', function(err, data) {
if (err) {
console.error(err);
return;
}
console.log(data);
});
fs.readFile('file.txt', 'utf8')
.then(data => console.log(data))
.catch(err => console.error(err));
async 关键字,可以在函数内部使用 await 关键字等待 Promise 完成。async function readFile() {
try {
const data = await fs.promises.readFile('file.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
}
const http = require('http');
const server = http.createServer((req, res) => {
console.log('Request received');
res.end('Hello World');
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
console.log(`Worker ${process.pid} started`);
}
通过使用这些方法和技术,Node.js 能够有效地处理并发请求,实现高性能和可扩展性。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。