async await分析和實現

2021-09-25 05:12:17 字數 1301 閱讀 7977

async的原理就是將generator和自動執行函式包裝在乙個函式裡面,generator手動呼叫next直到return,而async則是自動執行

async function test()

test().then( val => console.log(val) ) // 1

async function testa()

testa().then( val => console.log(val) ) // 1

// 自動執行函式接受乙個generator,遞迴呼叫後返回promise

function autowrap(genf) catch(e)

if(next.done) return resolve(next.value)

promise

.resolve(value) //遞迴呼叫

.then(val => auto(() => gen.next(val))) //上一次的值繼續傳給下個next

.catch(err => reject(err))

}auto(() => gen.next())

})}

async function fn(args){} 

// 等價於

function fn(args))

}fn() // 執行完返回的是乙個promise

async function log()

async function test()`) )

console.log(`await方式:$`)

}test()

// then方式:1

// await方式:1

function dispatch(action) 

// 判斷 action 是否有 type{必須} 屬性

if (typeof action.type === 'undefined')

// 如果正在 dispatch 則丟擲錯誤

if (isdispatching)

// 對丟擲 error 的相容,但是無論如何都會繼續執行 isdispatching = false 的操作

try finally

var listeners = currentlisteners = nextlisteners

for (var i = 0; i < listeners.length; i++)

return action

}

async await,實現同步

作為一名初學者,對於 而言,自然是對比於之前學過的知識,這樣才能判斷意義 對於promise了解不深入,但也稍微記錄,加深自我的印象。作為新特性來說,功能必然更好,就對比之前ajax來說,promise能夠將非同步轉為同步。如 async function ajaxtest url return n...

Promise和Async Await用法整理

一 promise 1 簡介 promise,簡單來說就是乙個容器,裡面儲存著某個未來才會結束的時間 通常是乙個非同步操作的結果 promise的基本語法 new promise resolve,reject 從語法上來說,promise是乙個物件,從它可以獲取非同步操作的訊息 基本語法 let p...

了解promise和async await的區別

學習過程中只會使用,不太了解這些個的區別,學習了解下 首先說說兩者的概念 兩者的區別 promise的出現解決了傳統callback函式導致的 地域 問題,但它的語法導致了它向縱向發展行成了乙個 鏈,遇到複雜的業務場景,這樣的語法顯然也是不美觀的。而async await 看起來會簡潔些,使得非同步...