emi*_*lly 62 multithreading asynchronous node.js
根据了解node.js事件循环,node.js支持单个线程模型.这意味着如果我向node.js服务器发出多个请求,它将不会为每个请求生成一个新线程,而是逐个执行每个请求.这意味着如果我在node.js代码中为第一个请求执行以下操作,同时在节点上有新请求,则第二个请求必须等到第一个请求完成,包括5秒休眠时间.对?
var sleep = require('sleep');
sleep.sleep(5)//sleep for 5 seconds
Run Code Online (Sandbox Code Playgroud)
有没有一种方法node.js可以为每个请求生成一个新线程,以便第二个请求不必等待第一个请求完成,或者我可以只在特定线程上调用sleep?
Dav*_*don 129
如果您指的是npm模块睡眠,它会在自述文件中注明sleep将阻止执行.所以你是对的 - 这不是你想要的.相反,你想使用非阻塞的setTimeout.这是一个例子:
setTimeout(function() {
console.log('hello world!');
}, 5000);
Run Code Online (Sandbox Code Playgroud)
对于任何希望使用es7 async/await执行此操作的人,此示例应该有所帮助:
const snooze = ms => new Promise(resolve => setTimeout(resolve, ms));
const example = async () => {
console.log('About to snooze without halting the event loop...');
await snooze(1000);
console.log('done!');
};
example();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105976 次 |
| 最近记录: |