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的下一行代碼