then疑惑
偽代碼
let api = new Promise((reject,resolved)=>{
????resolved([])
})?
? ?//????方法用于接口獲取數(shù)據(jù)并處理(單一)
async function getData(){
????const res = awiat api
????console.log(111111)
}
//????實(shí)際調(diào)用方法
function doSomeThing(){
????getData()
????console.log(22222)
}
在實(shí)際調(diào)用方法時(shí),會(huì)發(fā)現(xiàn)會(huì)先處理下面的2222,才會(huì)去處理11111(當(dāng)前隊(duì)列的宏任務(wù)22222結(jié)束才會(huì)去處理微任務(wù)111111)
但有時(shí)業(yè)務(wù)要求把數(shù)據(jù)處理完(111111),再去處理(22222)
方法1,將22222相關(guān)邏輯放于111111里面
//????傾向方法2,單一處理
方法2,在doSomeThing中給getData加一個(gè)await
困惑
getData為什么會(huì)有then方法,并沒有reject或者resolved的期約
測(cè)試
let p1 = new?Promise((reject,resolved)=>{
?})?
不返回(reject,resolved),p1也會(huì)有.then方法
let?p2?=?new?Promise((reject,resolved)=>{
????throw new Error(111111111)
?})?
不返回(reject,resolved),p2也會(huì)有.catch方法捕獲到11111111
結(jié)語(yǔ)
getData內(nèi)存在期約,所以會(huì)有.then方法,可以使用await