javaScript ES6 之 Promise 簡單的事例

在ES6標(biāo)準(zhǔn)中出現(xiàn)了 Promise(承諾) 類似于回調(diào)函數(shù)

1:創(chuàng)建Promise的實例

//創(chuàng)建實例
var promise = new Promise(function (resolve, reject) {
      if (success) {
          //執(zhí)行成功
          resolve(data);
      }else {
         //執(zhí)行失敗
          reject(err);
      }
})
//調(diào)用then()方法
promise.then(function(value){
    //成功時調(diào)用
}, function(value){
    //失敗時調(diào)用
})
//或者
promist.then(function(value)){
    //成功時調(diào)用
}).cathc(function(value){
    //失敗時調(diào)用
})

2:Promise結(jié)合fetch請求的使用

//定義一個方法犬缨,請求數(shù)據(jù)
requestData = (url, postData)=> {
      return new Promise(function (resolve, reject) {
            //fetch也是一個Promise
            fetch(url, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Content-Encoding': 'identity'  //編碼方式
                },
                body: JSON.stringify(postData),
            }).then((response) => response.json())
                .then((responseData)=> {
                    resolve(responseData);
                })
                .catch((err)=> {
                    console.log('err', err);
                    reject(err);
                });
            });
      }
}

//調(diào)用上面的方法
this.requestData('http://xxx', {'name': 'jj'})
     .then( res=>{
                console.log('success');
     }).catch( err=>{
            //請求失敗
            console.log('flied');

3:Promise.all 的用法

Promise.all([promise1, promise2]).then(function(value){

}).catch(function(value){

})

Promise.all中的參數(shù)是一個promise的數(shù)組[promise1, promise2]:數(shù)組中的操作都完成后才會去執(zhí)行后面的響應(yīng)

var req1 = new Promise(function(resolve, reject) { 
     // A mock async action using setTimeout
     setTimeout(function() { resolve('First!'); }, 4000);
});
var req2 = new Promise(function(resolve, reject) { 
     // A mock async action using setTimeout
     setTimeout(function() { reject('Second!'); }, 3000);
});
Promise.all([req1, req2]).then(function(results) {
     console.log('Then: ', one);
}).catch(function(err) {
     console.log('Catch: ', err);
});

// From the console:
// Catch: Second!

當(dāng)Promise.all中出現(xiàn)一個promise執(zhí)行失敗reject喳魏,Promise.all會立刻調(diào)用catch

4:Promise.race 的用法

Promise.race([promise1, promise2]).then(function(value){

}).catch(function(value){

})

Promise.race的參數(shù)也是一個promise的數(shù)組[promise1, promise2],不同于Promise.all怀薛,Promise.race的數(shù)組中只需要一個promise執(zhí)行成功刺彩,Promise.race就響應(yīng)接下來的操作

var req1 = new Promise(function(resolve, reject) { 
     // A mock async action using setTimeout
     setTimeout(function() { resolve('First!'); }, 8000);
});
var req2 = new Promise(function(resolve, reject) { 
     // A mock async action using setTimeout
     setTimeout(function() { resolve('Second!'); }, 3000);
});
Promise.race([req1, req2]).then(function(one) {
     console.log('Then: ', one);
}).catch(function(one, two) {
     console.log('Catch: ', one);
});

// From the console:
// Then: Second!

這里req2先執(zhí)行完成,則Promise.race的then回調(diào)被執(zhí)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枝恋,一起剝皮案震驚了整個濱河市创倔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌焚碌,老刑警劉巖畦攘,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異十电,居然都是意外死亡知押,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門摆出,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朗徊,“玉大人,你說我怎么就攤上這事偎漫∫遥” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵象踊,是天一觀的道長温亲。 經(jīng)常有香客問我棚壁,道長,這世上最難降的妖魔是什么栈虚? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任袖外,我火速辦了婚禮,結(jié)果婚禮上魂务,老公的妹妹穿的比我還像新娘曼验。我一直安慰自己,他們只是感情好粘姜,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布鬓照。 她就那樣靜靜地躺著,像睡著了一般孤紧。 火紅的嫁衣襯著肌膚如雪豺裆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天号显,我揣著相機與錄音臭猜,去河邊找鬼。 笑死押蚤,一個胖子當(dāng)著我的面吹牛蔑歌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播揽碘,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丐膝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钾菊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤偎肃,失蹤者是張志新(化名)和其女友劉穎煞烫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體累颂,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡滞详,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了紊馏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片料饥。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖朱监,靈堂內(nèi)的尸體忽然破棺而出岸啡,到底是詐尸還是另有隱情,我是刑警寧澤赫编,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布巡蘸,位于F島的核電站奋隶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏悦荒。R本人自食惡果不足惜唯欣,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搬味。 院中可真熱鬧忌卤,春花似錦吃度、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嚷狞,卻和暖如春绳姨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背她按。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工牛隅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酌泰。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓媒佣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親陵刹。 傳聞我的和親對象是個殘疾皇子默伍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

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

  • 一、前言 以往的經(jīng)驗告訴我衰琐,在接觸自己比較陌生的名詞和技術(shù)前首先要問三個問題: 它是用來做什么的也糊?它是如何實現(xiàn)的?...
    JRG_Orange閱讀 1,049評論 0 50
  • 弄懂js異步 講異步之前羡宙,我們必須掌握一個基礎(chǔ)知識-event-loop狸剃。 我們知道JavaScript的一大特點...
    DCbryant閱讀 2,710評論 0 5
  • 1:基本概念 從字面意思上來看,Promise是承諾狗热。它表示一個異步操作的最終狀態(tài)(完成或失敵佟),以及該異步操作的...
    前白閱讀 265評論 0 1
  • 目錄: 1.概述 2.基本用法2.1 創(chuàng)建Promise2.2 then方法2.3 catch方法2.4 其他創(chuàng)建...
    darjun閱讀 7,545評論 2 6
  • 魯迅先生寫 當(dāng)時的舊中國人民認為父親對于孩子有絕對的權(quán)力和威嚴(yán)匿刮。父親說話無所不可僧凰,孩子說話未說先錯。但魯迅先...
    di雨蕪閱讀 4,621評論 0 1