學習過程中只會使用,不太了解這些個的區別,學習了解下:
首先說說兩者的概念:
兩者的區別
promise的出現解決了傳統callback函式導致的「地域**」問題,但它的語法導致了它向縱向發展行成了乙個**鏈,遇到複雜的業務場景,這樣的語法顯然也是不美觀的。而async await**看起來會簡潔些,使得非同步**看起來像同步**,await的本質是可以提供等同於」同步效果「的等待非同步返回能力的語法糖,只有這一句**執行完,才會執行下一句。
async await與promise一樣,是非阻塞的。
async await是基於promise實現的,可以說是改良版的promise,它不能用於普通的**函式。
簡單來看,這兩者除了語法糖不一樣外,他們解決的問題、達到的效果是大同小異的,我們可以在不同的應用場景,根據自己的喜好來選擇使用。
// promise方法
let p1 = new promise((resolve,reject) => ,4000)
})let p2 = new promise((resolve,reject) => ,200)
})let p3 = new promise((resolve,reject) => ,200)
})// 想讓p1完成後再執行p2再執行p3
// 數量太多只能這麼寫
p1.then((res) => )
})})
//下面大神回答的挺好的
p1.then((res)=>)
.then((res)=>)
.then((res)=>)
// async await語法糖
let a1=()=>,4000)
})}
let a2=()=>,40)
})}
let a3=()=>,40)
})}
// 想讓a1完成後再執行a2再執行a3
//能避免**
async function asy());
await a2().then((res) => );;
await a3().then((res) => );;
}asy();
promise 和 async 的用法
先構造乙個 promise 函式 resolve 和 reject 都是乙個函式 resolve 在成功時呼叫 reject 在失敗時呼叫 function promise 1000 else 1000 then 和 catch 第乙個引數為resolve狀態時的 第二個引數為reject狀態時的 ...
promise與async和await的區別
什麼是async await?async await是寫非同步 的新方式,以前的方法有 函式和promise。async await是基於promise實現的,它不能用於普通的 函式。async await與promise一樣,是非阻塞的。async await使得非同步 看起來像同步 這正是它的魔...
promise與async和await的區別
什麼是async await?async await是寫非同步 的新方式,以前的方法有 函式和promise。async await是基於promise實現的,它不能用於普通的 函式。async await與promise一樣,是非阻塞的。async await使得非同步 看起來像同步 這正是它的魔...