async和await 巨集任務和微任務

2021-10-02 03:08:56 字數 3384 閱讀 2937

為了使我們的非同步**,更像同步的**

用法:首先在 function 前面加 async 用來說明這個函式是乙個非同步函式

然後在async裡面寫await

await等待當前async function語句內部語句的執行 await接受promise返回的成功或者失敗的內容,若沒有返回值則不繼續向下執行

async

functionfn(

)fn()

console.

log(

'b')

//a//b

functionfn(

))}async

functionf1(

)f1()

console.

log(3)

//1//3

functionfn(

)).then

(function

(a),

function

(a))

}async

functionf1(

)f1()

console.

log(3)

;//1

//3//4

//2

async

function

a(y)

function

b(x,y)a(

10)

使用promises,非同步函式有兩個可能的返回值:已解析的值和被拒絕的值。我們可以.then()用於正常情況,.catch()用於特殊情況。

async

function

a(y)

catch

(err)

}function

b(x,y)a(

10,)

function

getimage

(src);}

);}async

function

loadimages()

)return arr;

}var p=

loadimages()

; p.

then

(function

(arr)

)

非同步任務分為固定時間任務和非固定時間任務(載入檔案和載入檔案,ajax通訊)

而巨集任務和微任務是固定時間的非同步任務安排

事件拋發都是同步及時觸發 的

巨集任務裡面的微任務比微任務裡的巨集任務優先

微任務裡的微任務比微任務優先

案例:

promise.

resolve()

.then

(function()

,0)}

)settimeout

(function()

)},0

)

**執行過程:

1 使用promise

function

setlight

(light, time =

1000))

}, time)

}function

showlight()

).then

(function

(light)).

then

(function

(light))}

showlight()

;

2 使用async,await

function

setlight

(light, time =

1000))

}, time)

}async

function

showlight()

);}showlight()

;}showlight()

;

new

promise

(function

(res));

newpromise

(function

(res)).

then

(function()

);console.

log(0)

;//-----2})

.then

(function()

);})

.then

(function()

);promise.

resolve()

.then

(function()

);})

;settimeout

(function()

,0);

promise.

resolve()

.then

(function()

);},

0);settimeout

(function()

,0);

console.

log(1)

;new

promise

(function

(res, rej)).

then

(function()

);settimeout

(function()

,0);

},0)

;});

}).then

(function()

);settimeout

(function()

).then

(function()

);})

; promise.

resolve()

.then

(function()

);console.

log(13)

;},0

);})

;settimeout

(function()

);console.

log(15)

;},0

);console.

log(16)

;},0

);console.

log(17)

;},0

);console.

log(18)

;new

promise

(function

(res),0

);})

;

async與await以及巨集微任務

乙個正在努力愛好運動的程式猿 座右銘 越努力越幸運,越運動越健康,熱愛程式設計,熱愛運動。async functionf f promise f then function res async functionf f then res console.log 1 1 1234 await await...

非同步和等待 async和await

在.net 4.5中,通過async和await兩個關鍵字,引入了一種新的基於任務的非同步程式設計模型 tap 在這種方式下,可以通過類似同步方式編寫非同步 極大簡化了非同步程式設計模型。如下式乙個簡單的例項 static async void downloadstringasync2 uri ur...

async和await的講解

普通的函式宣告 async function a 複製 宣告乙個函式表示式 let a async function 複製 async形式的箭頭函式 let a async 複製 async與await例項應用,基礎 控制器呼叫與server中查詢資料 exports.getbloglist asy...