例如有下面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
