什么是Promise ?

什么是Promise ?

Promise是ES6中提供的一個異步編程的解決方案,Promise本身是一個構(gòu)造函數(shù)

console.log( typeof Promise)  //function

在js中壹堰,所有的代碼都是同步執(zhí)行的仇祭,而在js在進行網(wǎng)絡操作澡屡,瀏覽器實踐,任務隊列時妖爷,就導致很多代碼必須要進行回調(diào)蝶涩,出現(xiàn)回調(diào)地獄。
ajax就是典型的異步操作絮识。
Promise則是異步編程的一種解決方案绿聘,它有兩個特點:

1、對象的狀態(tài)不受外界影響次舌,
2熄攘、狀態(tài)改變是不可逆不可改變。

Promise一共有三種狀態(tài)彼念,分別為:
Pending(進行中)
Resolved(已完成)
Reject(已失斉不)
初始狀態(tài)為pending,如果成功則resolved逐沙,如果失敗測reject哲思。

promise 的基本用法

let promise = new Promise((resolve,reject) =>{
  resolve()
}).then(res=>{console.log(res)})

Promise構(gòu)造函數(shù)接收一共函數(shù)作為參數(shù),該函數(shù)有兩個參數(shù)分別為resolve和reject吩案,調(diào)用resolve則會代表成功棚赔,調(diào)用reject則會代表失敗。

then 方法

function greet(){  
  let promise = new Promise ((resolve,reject)=>{    
    let data = 'hello world'    
    resolve(data)
 }) 
return promise
 } greet().then(res=>{console.log(res)})

then方法是處理resolve和reject的回調(diào)徘郭,分別有兩個參數(shù)靠益,參數(shù)分別是(resolve)=>{},(reject)=>{}。then方法的返回值也是一個promise崎岂,因此可以不斷的進行鏈式調(diào)用then方法捆毫。

all方法

Promise的all方法提供了并行執(zhí)行異步操作的能力,它可以將promise數(shù)組作為參數(shù)冲甘,只有當時所有promise都成功后绩卤,才會獲取到成功結(jié)果途样,否則會報錯。

function p1(){ 
   var promise1 = new Promise(function(resolve,reject){ 
       console.log("p1的第一條輸出語句"); 
       resolve("p1完成");    })   
 return promise1; } 
function p2(){ 
   var promise2 = new Promise(function(resolve,reject){ 
       console.log("p2的第一條輸出語句"); 
        resolve("p2完成");    })   
 return promise2; }
 function p3(){
    var promise3 = new Promise(function(resolve,reject){ 
       console.log("p3的第一條輸出語句");
        resolve("p3完成")    }); 
   return  promise3; } 
Promise.all([p1(),p2(),p3()]).then(function(data){ 
console.log(data); }) 

打印結(jié)果:
p1的第一條輸出語句
p2的第一條輸出語句
p3的第一條輸出語句
['p1完成','p2完成','p3完成']

race方法

在all中的回調(diào)函數(shù)中濒憋,等到所有的Promise都執(zhí)行完何暇,再來執(zhí)行回調(diào)函數(shù),race則不同它等到第一個Promise改變狀態(tài)就開始執(zhí)行回調(diào)函數(shù)凛驮。

function p1(){
    var promise1 = new Promise(function(resolve,reject){
        resolve("p1完成");  
  })    return promise1; 
} 
function p2(){ 
   var promise2 = new Promise(function(resolve,reject){
         reject("p2失敗");    }) 
   return promise2;
 } 
Promise.race([p1(),p2()]).then(function(data){
    console.log(data); }) 

打印結(jié)果: p1完成

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裆站,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子黔夭,更是在濱河造成了極大的恐慌宏胯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件本姥,死亡現(xiàn)場離奇詭異肩袍,居然都是意外死亡,警方通過查閱死者的電腦和手機婚惫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門氛赐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人先舷,你說我怎么就攤上這事艰管。” “怎么了蒋川?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵牲芋,是天一觀的道長。 經(jīng)常有香客問我尔破,道長街图,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任懒构,我火速辦了婚禮餐济,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胆剧。我一直安慰自己絮姆,他們只是感情好,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布秩霍。 她就那樣靜靜地躺著篙悯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铃绒。 梳的紋絲不亂的頭發(fā)上鸽照,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音颠悬,去河邊找鬼矮燎。 笑死定血,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的诞外。 我是一名探鬼主播澜沟,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峡谊!你這毒婦竟也來了茫虽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤既们,失蹤者是張志新(化名)和其女友劉穎濒析,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啥纸,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡悼枢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了脾拆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡莹妒,死狀恐怖名船,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旨怠,我是刑警寧澤渠驼,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站鉴腻,受9級特大地震影響迷扇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜爽哎,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一蜓席、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧课锌,春花似錦厨内、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至志鞍,卻和暖如春瞭亮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背固棚。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工统翩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留仙蚜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓唆缴,卻偏偏與公主長得像鳍征,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子面徽,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

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

  • 阮一峰的ES6---Promise對象 Promise的含義 promise是異步編程的一種解決方法,比傳統(tǒng)的回調(diào)...
    roku2333閱讀 160評論 0 0
  • 內(nèi)存泄漏注意項 一.內(nèi)存泄漏概念 1.什么是內(nèi)存泄漏艳丛? 用動態(tài)存儲分配函數(shù)動態(tài)開辟的空間,在使用完畢后未釋放趟紊,結(jié)果...
    程序農(nóng)猿閱讀 299評論 0 1
  • Promise的含義: ??Promise是異步編程的一種解決方案氮双,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和...
    呼呼哥閱讀 2,170評論 0 16
  • Promise 對象 Promise 的含義 Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函...
    neromous閱讀 8,706評論 1 56
  • > 簡述: ## 什么是Promise霎匈? -Promise是用來處理異步的; -Promise就是承諾,對未來的承...
    風雪中的兔子閱讀 386評論 0 0