1:NodeJS 是什么

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

Node.js 的包管理器 npm,是全球最大的开源库生态系统。

NodeJS 的特点

其特点为:

  1. 它是一个 Javascript 运行环境

  2. 依赖于 Chrome V8 引擎进行代码解释

  3. 事件驱动

  4. 非阻塞 I/O

  5. 轻量、可伸缩,适于实时数据交互应用

  6. 单进程,单线程

NodeJS 的优缺点:

  • 优点:1. 高并发(最重要的优点)2. 适合 I/O 密集型应用

  • 缺点:

    1. 不适合 CPU 密集型应用;CPU 密集型应用给 Node 带来的挑战主要是:由于JavaScript 单线程的原因,如果有长时间运行的计算(比如大循环),将会导致 CPU 时间片不能释放,使得后续 I/O 无法发起;

    2. 只支持单核 CPU,不能充分利用 CPU

    3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

    4. 开源组件库质量参差不齐,更新快,向下不兼容

    5. Debug 不方便,错误没有 stack trace

  • 原因:单进程,单线程

  • 解决方案:

    1.分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞 I/O调用的发起;

    2.Nnigx 反向代理,负载均衡,开多个进程,绑定多个端口;

    3.开多个进程监听同一个端口,使用 cluster 模块;

async、await

async/await是什么?

简而言之, async用于申明一个function是异步的;而await则可以认为是 async await的简写形式,是等待一个异步方法执行完成的。

async和await的基础使用

  • async 表示这是一个async函数, await只能用在async函数里面,不能单独使用

  • async 返回的是一个Promise对象,await就是等待这个promise的返回结果后,再继续执行

  • await 等待的是一个Promise对象,后面必须跟一个Promise对象,但是不必写then(),直接就可以得到返回值

async/await的特点

1、Async作为关键字放在函数前面,普通函数变成了异步函数

2、异步函数async函数调用,跟普通函数调用方式一样。在一个函数前面加上async,变成async函数,异步函数,return:1,打印返回值,

3、返回的是promise成功的对象,

4、Async函数配合await关键字使用

async/await的优点

1.方便级联调用:即调用依次发生的场景;

2.同步代码编写方式:Promise使用then函数进行链式调用,一直点点点,是一种从左向右的横向写法;async/await从上到下,顺序执行,就像写同步代码一样,更符合代码编写习惯;

3.多个参数传递:Promise的then函数只能传递一个参数,虽然可以通过包装成对象来传递多个参数,但是会导致传递冗余信息,频繁的解析又重新组合参数,比较麻烦;async/await没有这个限制,可以当做普通的局部变量来处理,用let或者const定义的块级变量想怎么用就怎么用,想定义几个就定义几个,完全没有限制,也没有冗余工作;

4.同步代码和异步代码可以一起编写:使用Promise的时候最好将同步代码和异步代码放在不同的then节点中,这样结构更加清晰;async/await整个书写习惯都是同步的,不需要纠结同步和异步的区别,当然,异步过程需要包装成一个Promise对象放在await关键字后面;

5.基于协程:Promise是根据函数式编程的范式,对异步过程进行了一层封装,async/await基于协程的机制,是真正的“保存上下文,控制权切换……控制权恢复,取回上下文”这种机制,是对异步过程更精确的一种描述;

6.async/await是对Promise的优化:async/await是基于Promise的,是进一步的一种优化,不过在写代码时,Promise本身的API出现得很少,很接近同步代码的写法

Node.js async/awit相关推荐

  1. node mysql await_javascript – node.js async / await与MySQL一起使...

    我需要将所有结果同步并附加到带有async / await关键字的字符串,例如c# 我是node.js的新手,我无法将这种新语法适应我的代码. var string1 = ''; var string ...

  2. Node.js Async Await in ES7

    原文 http://stackabuse.com/node-js-async-await-in-es7/ One of the most exciting features coming to Jav ...

  3. node.js async循环数组的方法

    Collections 集合处理 async.forEachOf  |  eachOf(object, iterator, callback) 实现功能:遍历object对象执行iterator,报错 ...

  4. node.js async流程控制器--queue(队列)

    queue流程控制器是一个并行的流程控制器,但是它与parallel的区别在于queue可以控制一次执行几个函数,而parallel只是让所有函数并行执行. 例子如下: var q = async.q ...

  5. node.js async await 配合Promise对象使用

    function getData(){return new Promise(function(resolve, reject){setTimeout(function(){var uname = 'z ...

  6. node.js async/await 继发执行与并发执行

    async/await 继发执行与并发执行,看如何控制 两个异步函数 foo bar function foo() {return new Promise((resolve, reject) => ...

  7. node.js中对 mysql 进行增删改查等操作和async,await处理

    要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...

  8. 掌握Node.js中的Async和Await

    在本文中,你将学习如何使用Node.js中的async函数(async/await)来简化callback或Promise. 异步语言结构在其他语言中已经存在了,像c#的async/await.Kot ...

  9. 如何使用async / await和Firebase数据库编写漂亮的Node.js API

    by Paul Breslin 保罗·布雷斯林(Pau​​l Breslin) 如何使用async / await和Firebase数据库编写漂亮的Node.js API (How to write ...

最新文章

  1. 运维数据库平台~inception审核规则详解
  2. java-静态-单例-继承
  3. Android开发之原生定位的方法(GPS,网络定位)
  4. [Redux/Mobx] 在Redux中怎么发起网络请求?
  5. 序列模型简介——RNN, Bidirectional RNN, LSTM, GRU
  6. SAP ABAP 打印(smartforms方式)
  7. Qt学习笔记 信号和槽
  8. 失败的人只有一种,就是在抵达成功之前放弃的人
  9. vant 软键盘_H5页面 绝对定位元素被 软键盘弹出时顶起
  10. 用c 语言建立二叉链表,二叉链表建立二叉树c语言
  11. 教你如何找到线程插入式木马
  12. CPU Machine Check Architecture Error Dump (CPU: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz, CPUID: 0x
  13. python自动打卡
  14. Java基于springboot开发的财务咨询系统代理记账系统有论文
  15. 【Paper】Deep Learning for Anomaly Detection:A survey
  16. 黑马程序员mysql答案_干货|MySQL常见问题及答案汇总
  17. 16进制转字符串的简单实现
  18. [深入理解SSD系列综述 1.5] SSD固态硬盘参数图文解析_选购固态硬盘就像买衣服?
  19. 虚拟翻书系统,相比传统有哪些优势
  20. 读史的三个境界[同人于野]zt

热门文章

  1. 06_css3中的Animation(动画)
  2. OLTP与OLAP的区别
  3. 嵌入式入门——虚拟机Ubuntu的安装配置
  4. 回归分析法_回归分析
  5. slaveof directive not allowed in cluster mode
  6. python如何重载方括号[]
  7. 【仿牛客网笔记】初识Spring Boot,开发社区首页-开发社区首页
  8. iOS 【快速集成QQ表情键盘】
  9. 【求职杂谈】—阶段性求职总结
  10. c语言程序设计实验13文件,C语言程序设计实验指导书