promise
- 回调地狱-多层回调函数的相互嵌套,就形成了回调地狱,为解决它,es6新增Promise
setTimeout(()=>{
console.log('延时1秒后输出')
setTimeout(()=>{
console.log('延时2秒后输出')
setTimeout(()=>{
console.log('延时3秒后输出')
},3000)
},2000)
},1000)
- Promise是一个构造函数,new出来的Promise实例对象,代表一个异步操作;promise.prototype上包含一个.then()方法
const p=new Promise()
//p.then(成功的回调函数,失败的回调函数)成功函数必选,失败函数可选
p.then(result=>{},error=>{})
- 通过.then()方法的链式调用,解决回调地狱的问题
- 通过.catch()方法捕获错误,防止.then()方法链式调用导致的后续无法执行
- 通过.all()方***发起并行的Promise异步操作,等所有异步操作(按顺序)执行之后才会开启下一步的.then()操作
- 通过.race()方***发起并行的Promise异步操作,只要任何一个异步操作完成就执行下一个.then()操作(赛跑机制)
- async/await简化promise异步操作
- 如果使用了await,function必须被async修饰
- 在async方法中,第一个await之前的代码会同步执行,await之后的代码会异步执行
const p=new Promise()
async function getall(){
const r=await p()
return r
}
EventLoop
- 为防止耗时任务导致程序假死,js把待执行任务分为两类
- 同步任务,又称非耗时任务,在主线程上排队执行
- 异步任务,又称耗时任务,js委托给宿主环境执行,执行完成后js主线程执行该异步任务的回调函数
2.eventloop概念

宏任务和微任务
- 宏任务
- 异步Ajax请求
- setTimeout、setInterval
- 文件操作
- 其他
- 微任务
- Promise.then、.catch和.finally
- process.nextTick
- 其他微任务

- 执行顺序

API接口示例
- 搭建项目基本结构
- 创建基本服务器
- 创建db数据库操作模块
- 创建业务模块
- 创建路由模块