promise

  1. 回调地狱-多层回调函数的相互嵌套,就形成了回调地狱,为解决它,es6新增Promise
  • 耦合性太强,难以维护,大量冗余代码,可维护性差
setTimeout(()=>{
	console.log('延时1秒后输出')
    setTimeout(()=>{
    	console.log('延时2秒后输出')
    	setTimeout(()=>{
        console.log('延时3秒后输出')
      },3000)
    },2000)
},1000)
  1. Promise是一个构造函数,new出来的Promise实例对象,代表一个异步操作;promise.prototype上包含一个.then()方法
const p=new Promise()
//p.then(成功的回调函数,失败的回调函数)成功函数必选,失败函数可选
p.then(result=>{},error=>{})
  1. 通过.then()方法的链式调用,解决回调地狱的问题
  2. 通过.catch()方法捕获错误,防止.then()方法链式调用导致的后续无法执行
  3. 通过.all()方***发起并行的Promise异步操作,等所有异步操作(按顺序)执行之后才会开启下一步的.then()操作
  4. 通过.race()方***发起并行的Promise异步操作,只要任何一个异步操作完成就执行下一个.then()操作(赛跑机制)
  5. async/await简化promise异步操作
  • 如果使用了await,function必须被async修饰
  • 在async方法中,第一个await之前的代码会同步执行,await之后的代码会异步执行
const p=new Promise()
async function getall(){
	const r=await p()
    return r
}

EventLoop

  1. 为防止耗时任务导致程序假死,js把待执行任务分为两类
  • 同步任务,又称非耗时任务,在主线程上排队执行
  • 异步任务,又称耗时任务,js委托给宿主环境执行,执行完成后js主线程执行该异步任务的回调函数 2.eventloop概念 alt

宏任务和微任务

  1. 宏任务
  • 异步Ajax请求
  • setTimeout、setInterval
  • 文件操作
  • 其他
  1. 微任务
  • Promise.then、.catch和.finally
  • process.nextTick
  • 其他微任务 alt
  1. 执行顺序 alt

API接口示例

  1. 搭建项目基本结构
  2. 创建基本服务器
  3. 创建db数据库操作模块
  4. 创建业务模块
  5. 创建路由模块