Callback、Promise恨诱、async/await

一媳瞪、Callback回調(diào)函數(shù)
例子:

asyncFun1((err,result1)=>{
  if(err){
    console.error(err)    
  }
  asyncFun2((err,result2)=>{
    if(err){
       console.error(err)    
     }
     asyncFun3(()=>{
       if(err){
          console.error(err)
        }
     },result2)//把前面操作的結(jié)果result2傳進(jìn)來(lái)
  },result1)
})

callback函數(shù)應(yīng)用舉例:


image.png

image.png

就是通過(guò)callback回調(diào)函數(shù)來(lái)傳回?cái)?shù)據(jù)

缺點(diǎn):多重嵌套,容易造成“回調(diào)地獄”照宝,解決辦法是Promise
二、Promise
例子:

asyncFun1()//內(nèi)部函數(shù)執(zhí)行是異步的句葵,不知道什么時(shí)候執(zhí)行成功厕鹃,所以如果成功就調(diào)resolve(),失敗就調(diào)reject()
.then(result=>{//然后作為then的參數(shù)接收調(diào)用結(jié)果乍丈,then('success','failure')剂碴,這里failure可選
  return asyncFun2(result)//又是一個(gè)Promise對(duì)象
})
.then(result=>{
  return asyncFun3(result)
})
.catch(err=>{//統(tǒng)一的catch做錯(cuò)誤處理
  console.error(err)
})

promise應(yīng)用舉例:


image.png

image.png

也就是通過(guò)返回一個(gè)promise對(duì)象,把收到的結(jié)果放到成功之后的resolve函數(shù)里傳回到調(diào)用該函數(shù)的地方

缺點(diǎn):不能用try/catch轻专,并且還是一個(gè)異步形式的代碼(心智負(fù)擔(dān))忆矛,解決辦法是async/await
三、async/await
例子:

async function asyncMain(){//async表示函數(shù)里有異步操作
  try{
    const result=await asyncFun1()//await表示緊跟在后面的表達(dá)式需要等待結(jié)果
    result=await asyncFun2(result)
    result=await asyncFun3(result)
  }catch(e){
    console.error(e)
  }
}
asyncMain()

注:對(duì)async/await的補(bǔ)充
其實(shí)async函數(shù)就是Generator函數(shù)的語(yǔ)法糖请垛,其本質(zhì)是Generator函數(shù)催训,以下為Generator函數(shù)的介紹。
例子:

function* gen(x){//有個(gè)內(nèi)部指針(遍歷器)g
  var y=yield x+2;//異步操作需要暫停的地方用yield聲明
  return y;
}

執(zhí)行用next()宗收,如var g=gen(1);g.next()就是進(jìn)行第一個(gè)yield輸出3漫拭,再g.next()因?yàn)闆](méi)有yield需要執(zhí)行了就返回undefined,當(dāng)然如果執(zhí)行g(shù).next(2)就返回傳的參數(shù)2

參考:https://zhuanlan.zhihu.com/p/23249103?utm_medium=social&utm_source=weibo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末混稽,一起剝皮案震驚了整個(gè)濱河市采驻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖绞呈,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俐东,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡痘系,警方通過(guò)查閱死者的電腦和手機(jī)懒鉴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)碎浇,“玉大人临谱,你說(shuō)我怎么就攤上這事∨В” “怎么了悉默?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)苟穆。 經(jīng)常有香客問(wèn)我抄课,道長(zhǎng),這世上最難降的妖魔是什么雳旅? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任跟磨,我火速辦了婚禮,結(jié)果婚禮上攒盈,老公的妹妹穿的比我還像新娘抵拘。我一直安慰自己,他們只是感情好型豁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布僵蛛。 她就那樣靜靜地躺著,像睡著了一般迎变。 火紅的嫁衣襯著肌膚如雪充尉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天衣形,我揣著相機(jī)與錄音驼侠,去河邊找鬼。 笑死谆吴,一個(gè)胖子當(dāng)著我的面吹牛倒源,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纪铺,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼相速,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鲜锚?” 一聲冷哼從身側(cè)響起突诬,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苫拍,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后旺隙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绒极,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蔬捷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垄提。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡周拐,死狀恐怖铡俐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妥粟,我是刑警寧澤审丘,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站勾给,受9級(jí)特大地震影響滩报,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜播急,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一脓钾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桩警,春花似錦可训、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至柱蟀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚜厉,已是汗流浹背长已。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昼牛,地道東北人术瓮。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像贰健,于是被迫代替她去往敵國(guó)和親胞四。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 之前在知乎上聽了個(gè)live伶椿,當(dāng)時(shí)在發(fā)布辜伟,沒(méi)認(rèn)真聽氓侧、也沒(méi)怎么聽清,今天又重新聽了一遍导狡,理了一下中間的技術(shù)以及一些知識(shí)...
    shaocx閱讀 1,039評(píng)論 0 0
  • 異步編程對(duì)JavaScript語(yǔ)言太重要约巷。Javascript語(yǔ)言的執(zhí)行環(huán)境是“單線程”的,如果沒(méi)有異步編程旱捧,根本...
    呼呼哥閱讀 7,301評(píng)論 5 22
  • 簡(jiǎn)單介紹下這幾個(gè)的關(guān)系為方便起見(jiàn) 用以下代碼為例簡(jiǎn)單介紹下這幾個(gè)東西的關(guān)系独郎, async 在函數(shù)聲明前使用asyn...
    _我和你一樣閱讀 21,216評(píng)論 1 24
  • Promise 對(duì)象 Promise 的含義 Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函...
    neromous閱讀 8,702評(píng)論 1 56
  • 黑風(fēng)衣男子驅(qū)車來(lái)到一個(gè)不顯眼的院落枚赡,老板和黑衣男子像是熟悉似的幾句寒暄氓癌,黑衣男子安排好一切之后在我對(duì)面坐了...
    桑小晨7閱讀 361評(píng)論 0 2