node后端路由
node中的异步处理(前端异步流程)
1. 为什么进行异步操作?
- javascript为单线程,一次执行一个任务
2. 前端异步的操作模式
- 传统方式(回调函数/事件)
- 前端异步流程工具(封装出来的函数库)
- es6 promise
- es6 Generator
- es6-es8 async函数
- Node中异步处理工具:nextTick/setImmediate
- Node.js全局变量为global
- nextTick>回调函数>setImmediate
- 第三方类库async.js
3. Promise基本用法
- ES6规定,Promise对象是一个构造函数,用来生成Promise实例
- `resolve`函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 `pending` 变为 `resolved`),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
`reject`函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 `pending` 变为 `rejected`),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
- Promise 实例生成以后,可以用then 方法分别指定resolved状态和rejected状态的回调函数。
- Promise.all([Promise实例1,Promise实例2]),all中依次执行任务,即使有延时任务,也必须等待延时任务结束,后续任务才能执行
- Promise.race([Promise实例1,Promise实例2]),任务快的先执行,其他掩饰任务后续执行
4. Generator函数类似一般声明函数,function*,使用yield关键字来定义任务,返回值是一个对象{value:结果,done:总任务执行的状态},通过next()方法来遍历执行任务
5. async函数的返回值是一个Promise对象,使用then来执行await里面的语句