例如有下面3個函數
function a() {
b();
c();
}
function b() {
setTimeout(() => {
console.log('b')
}, 2*1000);
}
function c() {
setTimeout(() => {
console.log('c')
}, 1*1000);
}
a() //輸出結果分布是:c,b
如果我們相要讓他們按順序輸出b,c就不是很容易的了,因為settimeout函數是一個異步執行的事件,所以es6提供了一個async await配合promise方法來解決這個問題,
改寫成下面代碼
async function a() { await b() await c() } function b() { return new Promise((resolve, reject) => { setTimeout(() => { console.log('b') resolve(1) }, 2 * 1000); }) } function c() { return new Promise((resolve, reject) => { console.log('c') resolve(2) }) } a()//輸出:b,c
es6提供的async await 方法十分強大,但要配合promise來使用才能展現他的真正功能,具體的async await和promise用法可以百度了解一下
參考鏈接:https://www.jianshu.com/p/73b070eebf50