promise串行和并行执行(async、await)
function a(i) { return new Promise((resolve, reject) => { setTimeout(() => { console.log(i); resolve() }, 5000 - 1000 * i) }) } async function b() { console.log(1); for (let i = 0; i < 4; i++) { await a(i + 1) } console.log(5); } b()
通过async和await来使多个promise来实现串行执行
Promise.all(promisearr).then(res=>{ //所有promise执行完后的执行代码 })
Promise.all()方法是并行处理的,当所有的promise执行完成后执行
async是一个函数的修饰符,加上async关键词的函数会隐式地返回一个Promise,函数的返回值将作为Promise resolve的值。await后面跟的一定是一个Promise,await只能出现在async函数内,await的语义是:必须等到await后面跟的Promise有了返回值,才能继续执行await的下一行代码