ES6 Promise對象和then()的用法

Promise 對象

概述
是異步編程的一種解決方案忠烛。
從語法上說权逗,Promise 是一個對象,從它可以獲取異步操作的消息师坎。
狀態(tài)
Promise 異步操作有三種狀態(tài):pending(進(jìn)行中)堪滨、fulfilled(已成功)和 rejected(已失敗)惶岭。除了異步操作的結(jié)果,任何其他操作都無法改變這個狀態(tài)按灶。
Promise 對象只有:從 pending 變?yōu)?fulfilled 和從 pending 變?yōu)?rejected 的狀態(tài)改變鸯旁。只要處于 fulfilled 和 rejected ,狀態(tài)就不會再變了即resolved(已定型)铺罢。

const p1 = new Promise(function(resolve,reject){
  resolve('success1');
  resolve('success2');
});

const p2 = new Promise(function(){
  resolve('success3');
  reject('reject');

});

p1.then(function(value){
  console.log(value); // success1
});

p2.then(function(value){
  console.log(value); // success3
});

狀態(tài)的缺點
1.無法取消 Promise 韭赘,一旦新建它就會立即執(zhí)行,無法中途取消泉瞻。
2.如果不設(shè)置回調(diào)函數(shù)袖牙,Promise 內(nèi)部拋出的錯誤,不會反應(yīng)到外部鞭达。
3.當(dāng)處于 pending 狀態(tài)時畴蹭,無法得知目前進(jìn)展到哪一個階段(剛剛開始還是即將完成)。

then方法

概述
then 方法接收兩個函數(shù)作為參數(shù)叨襟,第一個參數(shù)是 Promise 執(zhí)行成功時的回調(diào)芹啥,第二個參數(shù)是 Promise 執(zhí)行失敗時的回調(diào),兩個函數(shù)只會有一個被調(diào)用墓怀。
then方法的特點
在 Java 事件隊列的當(dāng)前運(yùn)行完成之前卫键,回調(diào)函數(shù)永遠(yuǎn)不會被調(diào)用。

const p = new Promise(function(resolve,reject){
  resolve('success');
});

p.then(function(value){
  console.log(value);
});
console.log('first');
//輸出結(jié)果
// first
// success

通過 .then形式添加的回調(diào)函數(shù)钓账,不論什么時候,都會被調(diào)用服协。
通過多次調(diào)用.then啦粹,可以添加多個回調(diào)函數(shù),它們會按照插入順序并且獨(dú)立運(yùn)行跳纳。
then 方法將返回一個 resolved 或 rejected 狀態(tài)的 Promise 對象用于鏈?zhǔn)秸{(diào)用贪嫂,且 Promise 對象的值就是這個返回值。

const p = new Promise(function(resolve,reject){
  resolve(1);
}).then(function(value){ // 第一個then // 1
  console.log(value);
  return value * 2;
}).then(function(value){ // 第二個then // 2
  console.log(value);
}).then(function(value){ // 第三個then // undefined
  console.log(value);
  return Promise.resolve('resolve');
}).then(function(value){ // 第四個then // resolve
  console.log(value);
  return Promise.reject('reject');
}).then(function(value){ // 第五個then //reject:reject
  console.log('resolve:' + value);
}, function(err) {
  console.log('reject:' + err);
});

需要注意的點
1.簡便的 Promise 鏈?zhǔn)骄幊套詈帽3直馄交诽粒灰短?Promise餐曹。
2.注意總是返回或終止 Promise 鏈。如下代碼所示朽合,創(chuàng)建新 Promise 但忘記返回它時饱狂,對應(yīng)鏈條被打破,導(dǎo)致 p4 會與 p2 和 p3 同時進(jìn)行讲婚。大多數(shù)瀏覽器中不能終止的 Promise 鏈里的 rejection俊柔,建議后面都跟上 .catch(error => console.log(error));

const p1 = new Promise(function(resolve,reject){
  resolve(1);
}).then(function(result) {
  p2(result).then(newResult => p3(newResult));
}).then(() => p4());
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雏婶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子留晚,更是在濱河造成了極大的恐慌,老刑警劉巖奖地,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件参歹,死亡現(xiàn)場離奇詭異,居然都是意外死亡缸血,警方通過查閱死者的電腦和手機(jī)械筛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笆豁,“玉大人赤赊,你說我怎么就攤上這事『骞拢” “怎么了吹截?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵波俄,是天一觀的道長。 經(jīng)常有香客問我懦铺,道長,這世上最難降的妖魔是什么趁窃? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任醒陆,我火速辦了婚禮叔汁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘据块。我一直安慰自己另假,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布己莺。 她就那樣靜靜地躺著戈轿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胜蛉。 梳的紋絲不亂的頭發(fā)上色乾,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機(jī)與錄音案怯,去河邊找鬼澎办。 笑死,一個胖子當(dāng)著我的面吹牛浮驳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播离咐,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼宵蛀,長吁一口氣:“原來是場噩夢啊……” “哼县貌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梧宫,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脓豪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忌卤,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扫夜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驰徊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笤闯。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棍厂,靈堂內(nèi)的尸體忽然破棺而出颗味,到底是詐尸還是另有隱情,我是刑警寧澤勋桶,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布脱衙,位于F島的核電站,受9級特大地震影響例驹,放射性物質(zhì)發(fā)生泄漏捐韩。R本人自食惡果不足惜鹃锈,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一荤胁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屎债,春花似錦仅政、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躯喇,卻和暖如春辫封,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背廉丽。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工倦微, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人正压。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓欣福,卻偏偏與公主長得像,于是被迫代替她去往敵國和親焦履。 傳聞我的和親對象是個殘疾皇子拓劝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,554評論 2 349

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