了解promise和async await的區別

2022-06-22 11:39:17 字數 1116 閱讀 4061

學習過程中只會使用,不太了解這些個的區別,學習了解下:

首先說說兩者的概念:

兩者的區別

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使得非同步 看起來像同步 這正是它的魔...