小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

promise的常用情況

 路人甲Java 2021-10-28

因?yàn)閖s是單線程的,所以一旦代碼中有報(bào)錯(cuò),就不會(huì)執(zhí)行下面的了,如下333就未打印

console.log(111)
throw Error(222)
console.log(333)

好像與promise沒關(guān)系,哈哈。

1.傳說中的 setInterval 與 setTimeout
它們是單獨(dú)的線程執(zhí)行計(jì)數(shù)的(因?yàn)?JavaScript 引擎是單線程的, 如果處于阻塞線程狀態(tài)就會(huì)影響記計(jì)時(shí)的準(zhǔn)確),

它們并不會(huì)阻塞js的執(zhí)行,如下代碼先打印的是222
let timer  = setTimeout(()=>{

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,例如:
const init = async ()=>{
  let a = await axios().catch(err=>err);
  let b = await axios().catch(err=>err);
  let c = await axios().catch(err=>err);
  return a&&a.num&&b&&b.num&&c&&c.num&&a+b+c
}

最后附上Promise.all和Promise.race的使用理解

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多