您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Javascript中promise,async和await的區別是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Javascript中promise,async和await的區別是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
終于把promise, async, await的區別和聯系弄清楚了,看下面代碼
寫法1,2是promise的寫法
寫法6是async和await的寫法
主要看第2種寫法和第6中寫法即可, 第2種寫法是promise的典型寫法,第6中寫法是async, await的典型寫法
// 以下三個請求依次執行 req1 = () => { return fetch("http://example.com/api/v1/get")} req2 = () => { return fetch("http://example.com/api/v1/post")} req3 = () => { return fetch("http://example.com/api/v1/delete")} //寫法1 req1().then(res=>{ console.log("1: ",res) req2().then(res =>{ console.log("2: ",res) req3().then(res =>{ console.log("3: ",res) }) }) }) // 寫法2 req1().then(res =>{ console.log("1: ", res) return req2() }) .then(res =>{ console.log("2: ", res) return req3() }) .then(res =>{ console.log("3: ", res) }) // 寫法3 function f1(){ req1() req2() req3() } // 寫法4 async function f2(){ await req1 await req2 await req3 } // 寫法5 async function f3(){ req1().then(res => { console.log("1:", res) }) await f3_1() } async function f3_1(){ req1().then(res => { console.log("2:", res) }) await f3_2() } async function f3_2(){ req2().then(res=>{ console.log("3: ",res) }) } // 寫法6 ff() async function ff(){ await req1_good() } async function req1_good(){ fetch("http://example.com/api/v1/get").then(res =>{ console.log("1: ",res) }) await req2_good() } async function req2_good() { fetch("http://example.com/api/v1/post").then(res =>{ console.log("2: ",res) }) await req3_good() } async function req3_good() { fetch("http://example.com/api/v1/delete").then(res => { console.log("3: ",res) }) }
最外層的async函數調用之后立即返回了,但是async還是里面還是在逐層執行
await的作用是等待其修飾的函數內部的所有await函數都執行完畢,
從最外層啟動一個async函數相當于go一個協程,await func 也相當于go 一個協程,不同在于await = go + waitgroup
await比promise高明的地方在于,promise在then里面調用另一個promise時,不得不return另一個promise再then, 或者在then中回調,但是await完全不需要
async是為了異步,await是為了異步+阻塞,缺一不可
讀到這里,這篇“Javascript中promise,async和await的區別是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。