|
因?yàn)閖s是單線程的,所以一旦代碼中有報(bào)錯(cuò),就不會(huì)執(zhí)行下面的了,如下333就未打印 console.log(111) 好像與promise沒關(guān)系,哈哈。 1.傳說中的 setInterval 與 setTimeout 它們并不會(huì)阻塞js的執(zhí)行,如下代碼先打印的是222 console.log(111); },1000) console.log(222); 這時(shí)候如果我們想等到111打印后再打印222怎么辦(實(shí)際項(xiàng)目中并不提倡使用延時(shí)器),代碼如下 new Promise((resolve,reject)=>{ let timer = setTimeout(()=>{ console.log(111); resolve(); },1000) }).then(()=>{ console.log(222); }) 2.異步 http 請(qǐng)求線程 XMLHttpRequest 在連接后是通過瀏覽器新開一個(gè)線程請(qǐng)求,所以它與js也是異步的 所以現(xiàn)在大多數(shù)請(qǐng)求的方式,想axios,fetch等其實(shí)都已經(jīng)用promise封裝過了(請(qǐng)求成功resolve()失敗reject()),比如常遇到的當(dāng)我獲取到請(qǐng)求的數(shù)據(jù)(走then對(duì)應(yīng)resolve)或請(qǐng)求失?。ㄗ遚atch對(duì)應(yīng)reject)后在進(jìn)行一系列操作。但是當(dāng)對(duì)多個(gè)請(qǐng)求的返回值同時(shí)處理的時(shí)候就會(huì)造成嵌套,這樣會(huì)使代碼顯得非常冗長(zhǎng)丑陋,難以維護(hù),所以這時(shí)候就用到了await,例如: |
|
|