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

Node.js以及异步编程

        什么是服务器?我们知道客户端通过访问服务器,然后服务器去操作数据库把我们想要的数据拿过来给客户端。比如服务器就是餐厅的服务员,数据库就是厨房,客户端就是我们的顾客。首先我们点菜,服务器告诉厨师做饭,然后把饭给我们。这样我们就大致知道了服务器是做什么的。就是一个线程的容器为我们提供服务。

        

        Node.js是运行在服务器的js用来编写服务器。

        

        这里是java编写服务器和nodejs的不同,nodejs的特点1.单线程2.异步3.非阻塞4.统一API .

        

       I/O指的是input ouput 输入输出不会被阻塞,就是并行服务员一直接新订单。统一API是前后端都用js写。都遵循ECMAScript语法(流程控制语句 函数对象运算符一致)也保留了部分console.log调试语句。

        

      1.Nvm 的安装以及命令

            nvm是一个管理Node.js多版本的工具可以轻松切换不同项目所需的Node.js版本避免全局冲突。

        这里一些简单的命令

        

  2.怎么用node 

              1.直接在终端输入node

                

                就可以直接写js代码了 

          2.在根目录下用node 文件名

                  

        或者用快捷键 fn+f5(mac) 这样就可以调试我们写的node.js代码了。

3.异步编程

        首先理解同步和异步直接先插入一个概念,进程和线程。

        进程:程序运行的环境(工厂的厂房计算机内存给代码留的内存空间)

        线程(工人)线程是实际进行运算的东西在进程里面运算。

同步和异步

        通常情况下我们的代码是一行行执行如果前面代码不执行后面的代码也不会执行。如果同步的代码出现阻塞的情况,一行代码慢会影响整个程序的运行。

        为了解决同步的问题。node.js通过异步方式来解决。执行代码速度慢的代码不会影响其他代码。

        

         

        比如这种代码,我们后面的输出都需要等sum函数执行完三秒后才可以运行。我们如果用异步去解决的话。

        

         

        我们发现一个问题异步好像就拿不到result返回值了 ,因为我们同步输出了result这时候没有拿到result这就很难受了,我们怎么才能拿到值呢?我们可以用回调函数来解决。

        我们这里用回调函数然后作为参数来获取我们a+b的值然后输出,如果我们希望加好几次呢?就需要去在回调函数里面拿到result之后再去拿当前的result作为参数再次调用sum函数。

        

        就会出现这样代码的可读性差,可调试性差也是我们说的回调地狱。

现在我们知道我们用异步解决了所谓的同步代码会因为一行代码影响程序执行,但是异步的话我们就无法通过return设置返回值。虽然不会阻塞代码,但是需要回调函数的参数来返回结果。形成回调地狱。

        为了解决这个问题,Promise横空出世 Promise用来存储异步调用的数据 

http://www.dtcms.com/a/306505.html

相关文章:

  • vue模块化导入
  • 网络安全学习第16集(cdn知识点)
  • Android调用python库和方法的实现
  • 开源项目:排序算法的多种实现方式
  • DAY15-指针(3)
  • 解决:React Native 中常见的 状态栏遮挡内容
  • python 中 TypeError: self类型对象传入错误解决办法
  • 在职申硕,怎么选适合自己的学科专业呢?
  • 计算机网络1-3:三种交换方式
  • sed编程入门
  • Android RTMP推送|轻量级RTSP服务同屏实践:屏幕+音频+录像全链路落地方案
  • 本地 docker 部署 HAR包分析工具 harviewer
  • 2025年7月技术问答第5期
  • MySQL: with as与with RECURSIVE如何混合使用?
  • 【算法】十大排序算法超深度解析,从数学原理到汇编级优化,涵盖 15个核心维度
  • 专题:2025机器人产业技术图谱与商业化指南|附130+份报告PDF、数据汇总下载
  • C++实战:抖音级视频应用开发精髓
  • LazyLLM教程 | 第2讲:10分钟上手一个最小可用RAG系统
  • [极客时间]LangChain 实战课 -----|(11) 记忆:通过Memory记住客户上次买花时的对话细节
  • macOS 设置 Claude Code
  • 02 NameServer是如何管理Broker集群的
  • 【STM32-HAL】 SPI通信与Flash数据写入实战
  • Elasticsearch(ES)基础语法(笔记)(持续更新)
  • MySQL索引和事务笔记
  • 如何通过项目管理系统提升交付率
  • Kafka 重复消费与 API 幂等消费解决方案
  • IO复用实现并发服务器
  • 【PZ7020-StarLite 入门级开发板】——FPGA 开发的理想起点,入门与工业场景的双重优选
  • 【工具】jsDelivr CDN完全指南:免费高速的开源项目CDN服务
  • Apache Ignite 与 Spring Boot 集成