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...