700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 轻松创建nodejs服务器(7):阻塞操作的实现【node.js】

轻松创建nodejs服务器(7):阻塞操作的实现【node.js】

时间:2022-11-18 06:36:17

相关推荐

轻松创建nodejs服务器(7):阻塞操作的实现【node.js】

web前端|js教程

nodejs,服务器,阻塞操作

web前端-js教程

我们来看一下什么是阻塞操作;

农产品源码,vscode 代码调用,ubuntu rsh,tomcat网站路径,sqlite类似的软件,鼠标滚轮缩放图片插件,最常用的前端框架,Python协程队列爬虫,php数组声明,阜阳行业seo推广,小清新个人网站,html动态网页模板下载,简约手机网页模板免费下载lzw

我模拟一个sleep()方法来使hello star延迟10秒打印。

java tomcat源码,vscode选中同一代码,ubuntu 电子书,有tomcat可以建jsp吗,sqlite 支持事务,网页设计学习教程,做网站用什么服务器,左侧菜单 js 插件,前端框架链式访问,爬虫爬钉钉,php页面静态化技术,seo关键词排名怎么做,网站放视频代码,网页拼图html源代码,手机电影模板,html5 商城页面模版,商家信息网管理系统 thinkphp,小偷程序有免费的吗lzw

requestHandlers.js

5173源码,ubuntu安装rpm教程,谷歌免费爬虫插件,神php,任丘seo营销lzw

function start() {

console.log("Request handler start was called.");

function sleep(milliSeconds) {

var startTime = new Date().getTime();

while (new Date().getTime() < startTime + milliSeconds);

}

sleep(10000);

return "Hello Start";

}

function upload() {

console.log("Request handler upload was called.");

return "Hello Upload";

}

exports.start = start;

exports.upload = upload;

请求/start的时候,延迟了10秒才打印。

请求/upload的时候,并不会受影响。

接下来做一个试验:

在第一个浏览器窗口的地址栏中输入 http://localhost:8888/start,但是先不要打开它!

在第二个浏览器窗口的地址栏中输入 http://localhost:8888/upload,同样的,先不要打开它!

我们在第一个窗口中(“/start”)按下回车,然后快速切换到第二个窗口中(“/upload”)按下回车。

注意,发生了什么:

/start URL 加载花了 10 秒,这和我们预期的一样。

/upload URL 居然也花了 10 秒!

可以它在对应的请求处理程序中并没有类似于 sleep()这样的操作啊,这是什么问题?

原因就是start()包含了阻塞操作。形象的说就是“它阻塞了所有其他的处理工作”。

Node.js 是单线程的,它可以在不新增额外线程的情况下对任务进行并行处理。

它通过事件轮询(event loop)来实现并行操作,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。

下一节我们将介绍一下如何实现非阻塞操作。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。