async await基本使用

2021-10-05 06:43:20 字數 2090 閱讀 9383

asunc/await的底層學習可以學習es6,它其實是乙個genterator的語法糖。

執行非同步
async

function

timer()

,2000);

})// 非同步promise結束

console.

log(ret, num)

;// 這裡等待非同步執行完,所以結果是11, 11

return ret;

}timer()

.then

(res =>

)

async

function

log(),

1000);

console.

log(ret, num)

;// 1, 2 1是定時器的返回結果, 2則是num說明定時器還是走了非同步

return ret;

}log()

.then

(res =>

)

和axios實測(axios底層是promise)

const axioscommon = axios.

create()

async

function

axiosget()

)// 等待非同步執行完畢在執行下面語句

console.

log(ret)

;// 返回的是axios封裝的物件

return ret;

}axiosget()

.then

(res =>

)

async/await使用場景之前乙個請求傳送後拿到的結果作為下乙個請求的引數

// 這是前端請求

const axioscommon = axios.

create()

async

function

morerequest()

)const res =

await

axioscommon(}

)return res

}morerequest()

.then

(res =>

)

//    node後台

get(

'/async-await2'

,(req, res)

=>)}

)get

('/async-await3'

,(req, res)

=>

// 判斷引數是否正確,正確即修改,不正確就給預設的錯誤反饋

req.query.config ==

'ok'

?(senddata.data =

true

, senddata.msg =

'success'

): senddata;

return res.

json

(senddata)

;// json資料返回給前端,因為axios會自動轉換的緣故所以不用json.parse()方法

})

這裡需要注意一點,呼叫方法後.then()實質上還是乙個非同步,所以要獲取的東西、渲染就在內部寫。否則的話根據js執行機制,非同步只會在同步結束後再執行。

經過一段時間配合node的非同步處理使用之後發現await new promise()的內部需要rejected()或者resolve()其中之一,最好兩個都有。不然返回不到結果。

如果你的await後面的promise物件裡面還有乙個非同步,並且你希望能像同步一樣按順序執行,我的做法是在封裝乙個async/await方法然後再裡面再用乙個方法().then(res => {}).

菜雞我夏天也是要努力的,雖然現在很菜如果不努力以後只會更菜 ——web noob && coder noob

ES6 async await基本使用

async是非同步程式設計的最新標準,我們來看看async如何使用 async functionfn console.log fn promise fn then res async作為關鍵字放在函式前面,讓同步的函式成為非同步函式,不關函式裡返回什麼,列印出還是promise,說明async還是基...

使用async await 總結

async await 迴圈並行處理 同步 同一執行緒之中,順序完成不同的操作,是一種阻塞模式 後乙個請求操作需要等待前乙個操作完成之後,才能發出。非同步 需要開啟不同的執行緒,是非阻塞模式。同步類似於打 而非同步相當於發簡訊。傳送請求獲取天氣非同步操作,利用node fetch完成請求 const...

async await使用的要點

async await的使用 1 如果乙個方法標註了async,則其返回值只能是 void,task,task三者之一 2 如果非同步方法中沒有await,那麼這個方法將會以同步方式執行 3 單個async方法中可以擁有多個await 4 當遇到await表示式時,呼叫執行緒將會掛起,知道await...