当前位置: 首页 > news >正文

设计网站公司湖南岚鸿设计郑州做网站的论坛

设计网站公司湖南岚鸿设计,郑州做网站的论坛,php简易企业网站源码,英文外链平台2024/3/12 发布 正在寻觅一份前端开发工作#xff0c;如果您觉得这篇文章对你有所帮助#xff0c;这是我的简历1 在这篇文章中你能学习和理解#xff1a;NodeJS是如何工作、如何处理所有发送给服务器的函数#xff08;无论同步或者异步#xff09;和请求、Event Loops in … 2024/3/12 发布 正在寻觅一份前端开发工作如果您觉得这篇文章对你有所帮助这是我的简历1 在这篇文章中你能学习和理解NodeJS是如何工作、如何处理所有发送给服务器的函数无论同步或者异步和请求、Event Loops in NodeJS 。就是在NodeJS环境中同步代码和异步代码是如何执行的以及event loop是如何管理异步代码的。 背景 想必每位前端开发工程师都能在NodeJS官网-学习入门 处看到这样一句话NodeJS is an asynchronous event-driven JavaScript runtime environment designed to build scalable network applications. 理解什么是Asynchronous异步 这里的Asynchronous指的是 那些在后台background处理不堵塞blocking任何其他请求request的JS函数function 理解什么是Event Loop 事件循环 在NodeJS 环境中Node用Event Loop 处理请求。 An event loop是一个内置在NodeJS环境中的事件监听者它所拥有的一些函数随时准备去监听处理和为事件进行输出。 用英文解释会更清楚An event loop is an event-listener which functions inside the NodeJS environment and is always ready to listen, process, and output for an event. PS一个事件an event可以是鼠标事件定时事件键盘事件等。 理解什么是Synchronous programming同步程序 and Asynchronous programming 同步程序就是the code运行遵循书写下的序列sequence在同步程序中只有一个函数被调用并返回了一个值之后下一行的函数才能执行。 让我们用以下的代码举个例子 const listItems function(items) {items.forEach(function(item) {console.log(item)}) }const items [Buy milk, Buy coffee]listItems(items)The output will look like this: “Buy milk” “Buy coffee” 在这个例子中,当listItems(items)函数被调用后,它会循环抓取items数组元素,console.log(item)函数得到数组第一个元素后输出Buy milk.然后console.log(item)再次执行时,通过数组第二个元素,输出Buy coffee 这就是所谓的函数遵循书写下的序列执行。 换句话来说异步程序就是代码执行并不遵循明确的序列sequence。这些函数并不表现为一个程序中定义的序列而仅仅当遇见确定的条件。 举个例子setTimeOut() 表现为在提前指定的毫秒延迟过后执行一个任务。 setTimeOut(function(){return( console.log(Hello World!) ) }, 3000) 这类函数并不是根据书写顺序一行行得运行仅仅当他们需要被执行和函数的声明无关在这个例子中在所有同步函数synchronous function都已经执行完过后这个输出函数将会在3秒之后自动执行在同步函数被执行完之前异步函数会在后台被处理。 理解NodeJS 如何在后台处理异步函数 以及如何先执行所有同步函数所有的这些机制可以用NodeJS event loop轻松解释。 How Does an Event Loop Work? 用一个diagram来看看NodeJS event loop 如何执行一个简单的同步程序 左上角是一个即将被执行的Node file左下角是一个程序输出端以及你会拥有 Call stack, Node APIs and Callback queue. 所有这些组成了这个 NodeJS environment. 对于同步程序只需要关注call stack 这是这个例子下NodeJS 环境唯一会产生工作的地方。call stack 就是一个数据结构用于在程序中锁定所有函数的执行 当程序开始执行首先call stack 注入一个匿名main()函数这个机制是NodeJS默认的。 接下来变量a和b被创建以及他们的和被存储在变量sum中。所有的取值都被存储在内存中。 现在console.log()是一个函数它被调用以及push到call stack 然后执行你就会在输出端的屏幕中看到它的输出结果。 当函数执行完毕就会从call stack 中被移除。接着当程序没有剩下的东西被调用main()也会被移出call stack。以上就是同步程序执行的过程。 现在来看在NodeJS中异步程序如何执行。异步程序就需要call stack 、Node APIs、callback queue 全部一起参与处理。 看下面这个例子 和上面的一样当程序开始执行第一步是main()被添加到call stack中。然后console.log(Start)被调用和添加到stack栈。进过处理输出就在输出端被看见接着就会从call stack 中被移除。 现在下一句是setTimeOut(...Zero...),函数被调用和添加到call stack。 因为这是一个异步函数它不会在call stack中被处理它从call stack 添加到Node APIs 在Node APIs中事件被注册回调函数callback function被设置并在后台进行处理。 接下来setTimeOut(...Two..)同样的道理进入Node APIs接着又一个callback function 被设置为在后台两秒之后处理。当这个时刻到来之前其他函数都可以被执行。 这叫做非阻塞式行为直到满足条件轮到他们执行之前所有的同步函数首先在后台被处理和执行 接下来console.log(End)函数被最后调用并在call stack中处理输出端可以看到输出结果。现在所有的同步方法都被处理了然后main被移除call stack。 在后台所有的异步函数被处理以及所有的回调函数被存储在callback queue首先处理的一个将首先添加到队列中以便在回调堆栈中执行。 Note: Asynchronous functions cannot run inside a callback stack until it gets emptied. That means that after main() is removed from call stack, only then can all asynchronous functions start executing. 现在他们被event loop一个个得推入call stack 并得到执行。 每次被调用时这些回调函数都会用console.log()函数打印value。 最后这些都会被在执行过后被移除现在call stack 再次清空了。 这就是NodeJS环境下 如何执行同步异步函数以及event loop 如何管理调用异步函数。 Conclusion 在这篇文章中你理解了NodeJS的内部工作机制以及明白了异步程序如何被执行。 现在你应该理解为什么2秒的延迟函数没有阻塞其他的程序执行你也明白为什么0秒的延迟函数在“End”输出后打印其值。 以上就是全部我希望你们享受这篇文章的内容并学到一些新东西分享这篇文章如果你觉得它有用感谢你们的点赞关注和岗位内推找到工作我会告诉大家 我的简历点击获取欢迎随时联系我 If you want to learn more about NodeJS and asynchronous programming, you can refer to this article ↩︎
http://www.zqtcl.cn/news/912191/

相关文章:

  • 建立网站一般多少钱wordpress评论跳过验证
  • 南京每月做社保明细在哪个网站查看设计作品的网站软件
  • html怎么做网站如何在腾讯云上网站建设
  • 网站建设怎么链接表格手机做外贸有什么好的网站
  • 深圳开发网站建设哪家好外贸网络营销培训
  • 广州智迅网络做网站免费下载ps素材网站
  • 什么网站时候做伪静态开发软件定制
  • 找人做网站 多少钱西宁市公司网站建设
  • 网页设计 教程网站找权重高的网站方法
  • 网站建设本地还是外地重庆seo排名方法
  • 那个网站做网编好昨晚兰州发生了什么事
  • 温州建设局网站首页哪里可以学做资料员的网站
  • 网站怎样在360做优化wordpress文章图片在线裁剪
  • 彭州建设网站建设网站哪间公司比较好
  • qq空间网站根目录慧聪网首页
  • 制作小程序和网站的公司杭州品牌设计公司
  • 显示网站翻页代码wordpress 金融 模板下载
  • 用双语网站做seo会不会phpmysql网站
  • 长沙专业网站建设公司优惠券怎么做自己的网站
  • 做网站如何宣传怎么弄公众号
  • seo网站策划书网站建设资金投入
  • 做网站东莞东莞建网站wordpress 多文件上传
  • 公司注册流程聊城网站优化案例
  • 化妆品网站建设实施方案杭州seo代理公司
  • 网站小图片素材高质量外链
  • 福州个人建站模板有没有一些有试卷做的网站
  • 教你如何建设网站阿里去旺道seo优化
  • 想做一个个人网站怎么做网站组成部分
  • 旅游门户网站模板下载全国最新产品代理商
  • 老河口网站设计中企动力科技做什么的