Vue - day8

day8 Promise

引入

回調(diào)地獄

  • 回調(diào)函數(shù)中 嵌套 其他回調(diào)函數(shù) 例子: 多個文件依次讀取

  • 解決方法: 使用ES6 中的 Promise, 來解決 回調(diào)地獄的問題

基本概念

  1. Promise 是一個 構(gòu)造函數(shù), 既然是構(gòu)造函數(shù) 就可以new Promise() 得到一個 Promise 的實例
  2. 在 Promise 上, 有兩個函數(shù) resolve(成功后的回調(diào)) 和 reject(失敗后的回調(diào))
  3. 在 Promise 構(gòu)造函數(shù) Prototype 屬性上, 有.then() 方法
  4. Promise 表示一個 異步操作, 每當我們new 一個Promise 的實例, 就表示一個異步操作
  5. 異步操作有兩種狀態(tài)
    • 狀態(tài)1: 異步執(zhí)行成功, 需要調(diào)用 resolve 返回結(jié)果
    • 狀態(tài)2: 異步執(zhí)行失敗, 需要調(diào)用 reject 返回結(jié)果
    • 由于異步操作無法使用 return 把操作結(jié)果返回, 這時候, 只能使用回調(diào)函數(shù) 來把結(jié)果(成功/失敗)返回.
  6. 我們可以在 new 出來的 Promise 實例上, 調(diào)用 .then()方法, **[預(yù)先] **為這個 Promise異步操作, 指定 成功 和 失敗 回調(diào)函數(shù).

形式上 和 具體的 異步操作的區(qū)別

形式上 的異步操作: 我們知道它是一個異步操作, 但是具體做什么事情, 目前還不清楚

var promise = new Promise()

具體的 的異步操作: 使用 function 指定一個具體的 異步操作

var promise = new Promise(function(){
    // 這個 fun 內(nèi)部寫的就是具體的異步操作
})

Promise實例 只要被創(chuàng)建 就會立即執(zhí)行里面的異步方法

  • 每當 new 一個 Promise 實例的時候, 就會執(zhí)行 異步操作中的代碼
  • 也就是說, new的時候, 除了能夠得到一個 Promose 實例之外, 還會立即調(diào)用 我們傳遞的 function, 并執(zhí)行function 中的 異步操作代碼

通過 .then() 指定成功失敗的回調(diào)

const p = new Promise(function(res, rej){
    // 成功返回res 失敗返回rej
    res(data)
    rej(err)
})

p.then(function(data){
    console.log(data)
},function(err){
    console.log(err)
})

注意: 通過.then 指定回調(diào)函數(shù)的時候, 成功的回調(diào) 必須傳, 失敗的回調(diào) 可以省略不傳

Promise 正確使用方式

image

需求: 依次讀取文件1 文件2 文件3

捕獲異常的兩種方式

1.Promise 執(zhí)行失敗, 但是不影響后續(xù), 此時, 我們可以單獨為 每個Promise, 通過 .then 指定一下失敗回調(diào)

image

2.和上面需求剛好相反, Promise 執(zhí)行失敗,后續(xù)直接終止, 可以使用 .catch() 指定回調(diào)函數(shù) 捕獲錯誤

作用: 如果執(zhí)行過程中, 有任意一步失敗, 就會立即中終止所有 Promise的執(zhí)行, 并馬上進入.catch() 中, 拋出異常

.catch(err => console.log(err.message))

Jquery 中Ajax使用Promise指定成功回調(diào)函數(shù)

$.ajax({
  url: '/path/to/file',
  type: 'GET',
  dataType: 'xml/html/script/json/jsonp',
  data: {param1: 'value1'},
})
  .then(function(data){
    console.log(data)
  })        
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌泳桦,老刑警劉巖炼列,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件点楼,死亡現(xiàn)場離奇詭異煞聪,居然都是意外死亡,警方通過查閱死者的電腦和手機柱告,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笑陈,“玉大人际度,你說我怎么就攤上這事『祝” “怎么了乖菱?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蓬网。 經(jīng)常有香客問我窒所,道長,這世上最難降的妖魔是什么帆锋? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任吵取,我火速辦了婚禮,結(jié)果婚禮上窟坐,老公的妹妹穿的比我還像新娘海渊。我一直安慰自己,他們只是感情好哲鸳,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布臣疑。 她就那樣靜靜地躺著,像睡著了一般徙菠。 火紅的嫁衣襯著肌膚如雪讯沈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音缺狠,去河邊找鬼问慎。 笑死,一個胖子當著我的面吹牛挤茄,可吹牛的內(nèi)容都是我干的如叼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼穷劈,長吁一口氣:“原來是場噩夢啊……” “哼笼恰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起歇终,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤社证,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后评凝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體追葡,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年奕短,在試婚紗的時候發(fā)現(xiàn)自己被綠了宜肉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡篡诽,死狀恐怖崖飘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杈女,我是刑警寧澤朱浴,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站达椰,受9級特大地震影響翰蠢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啰劲,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一梁沧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝇裤,春花似錦廷支、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至藕甩,卻和暖如春施敢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工僵娃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留概作,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓默怨,卻偏偏與公主長得像讯榕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子先壕,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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

  • title: promise總結(jié) 總結(jié)在前 前言 下文類似 Promise#then瘩扼、Promise#resolv...
    JyLie閱讀 12,225評論 1 21
  • Promise 對象 Promise 的含義 Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函...
    neromous閱讀 8,698評論 1 56
  • 你不知道JS:異步 第三章:Promises 在第二章垃僚,我們指出了采用回調(diào)來表達異步和管理并發(fā)時的兩種主要不足:缺...
    purple_force閱讀 2,052評論 0 4
  • 特別說明,為便于查閱规辱,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 338評論 0 0
  • 到了孕中期的孕婦谆棺,絕大多數(shù)已經(jīng)擺脫了孕吐造成的困擾,胃口逐步轉(zhuǎn)好罕袋,開始顯懷明顯改淑,體重逐步提升,尿頻的癥狀開始出現(xiàn)浴讯,...
    大桃子的家閱讀 428評論 0 2