javascript 中 async/await 是 generator 的语法糖 async函数返回的是promise对象 async 表示函数里面有异步操作 await 等待后面的异步操作得出结果 可以理解为 将异步转化为同步;因为promise的特点-无等待,若是无await的情况下 会立即执行 返回一个promise对象 并且不会阻塞后面的代码;await可以理解为在等待async,但是await不仅仅可以用于等待promise对象 也可以 用来等任意表达式的结果哦
自测应用代码:
node.js: router.get('/list',async (req,res,next)=>{ const zz = await Car.find() const bb = await People.find().populate('p') res.json({ code:200, zz, bb }) }) js: async getAtllInfor(){ var result = await axios.get('http://localhost:3333/list'); console.log(result) }如果是单一的promis链 并不能体现async/await 的优势 如果需要处理多个由promise组成的then链时,且每一个步骤都需要之前的步骤的结果 就会有所体现 如第一次的then链调用完之后 需要返回一个promise的对象 再去调用第二次then方法
var p1 = new Promise((resolve,reject)=>{ setTimeout(resolve,1000); }); p1.then(function(){ console.log("action"); return setTime(1000); }) .then(function(){ console.log("the..."); return setTime(2000); }) .then(function(){ console.log("over"); return setTime(3000); }) function setTime(time){ return new Promise((resolve,reject)=>{ setTimeout(resolve,time); }) }