JavaScript同步--Promise

1. 創(chuàng)建Promise

  var myPromise =  new Promise(function(resolve, reject){})

resolve : 執(zhí)行成功調(diào)用方法
reject : 執(zhí)行失敗調(diào)用方法

2. 使用Promise

  function testSuccess(data){
    console.log(data);
  }

  function testError(data){
    console.log(data);
  }

  function test(resolve,reject){
     if(true){
       resolve(1);
      }else{
        reject("錯(cuò)誤");
      }
  }

  var testPromise = new Promise(test);

  testPromise.then(testSuccess).catch(testError);

new Promise() : 新建Promise
testPromise處理過程典尾,處理完成后,調(diào)用resolve或者reject方法
testPromise.then(testSuccess)then中的testSuccess即為Promiseresolve方法
testPromise.catch(testError)catch中的testError即為Promisereject方法

3. 多個(gè)Promise連環(huán)調(diào)用

  function anotherPromise(val){
    return new Promise(function(resolve,reject){
             resolve(++val);
      })
  }

  var testPromise = new Promise(test);
  testPromise.then(anotherPromise).then(anotherPromise).then(testSuccess).catch(testError);

通過返回Promise 可以實(shí)現(xiàn)Promise的連環(huán)調(diào)用。如:在一個(gè)ajax結(jié)束后再進(jìn)行另外一個(gè)ajax读拆。

4. 多個(gè)Promise同時(shí)調(diào)用琐驴,返回所有數(shù)據(jù)

   var p1 = new Promise(function (resolve, reject) {
    setTimeout(resolve, 500, 'P1');
  });
  var p2 = new Promise(function (resolve, reject) {
    setTimeout(resolve, 600, 'P2');
  });
  // 同時(shí)執(zhí)行p1和p2,并在它們都完成后執(zhí)行then:
  Promise.all([p1, p2]).then(function (results) {
    console.log(results); // 獲得一個(gè)Array: ['P1', 'P2']
  });

可以同時(shí)執(zhí)行多個(gè)Promise滑绒,在全部完成后調(diào)用resolve

5.多個(gè)Promise同時(shí)調(diào)用权她,返回最快resolve的數(shù)據(jù)

  var p1 = new Promise(function (resolve, reject) {
      setTimeout(resolve, 500, 'P1');
  });
   var p2 = new Promise(function (resolve, reject) {
      setTimeout(resolve, 600, 'P2');
   });
   Promise.race([p1, p2]).then(function (result) {
      console.log(result); // 'P1'
   });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市刀森,隨后出現(xiàn)的幾起案子贯底,更是在濱河造成了極大的恐慌,老刑警劉巖撒强,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禽捆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡飘哨,警方通過查閱死者的電腦和手機(jī)胚想,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芽隆,“玉大人浊服,你說我怎么就攤上這事∨哂酰” “怎么了牙躺?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腕扶。 經(jīng)常有香客問我孽拷,道長(zhǎng),這世上最難降的妖魔是什么半抱? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任脓恕,我火速辦了婚禮,結(jié)果婚禮上窿侈,老公的妹妹穿的比我還像新娘炼幔。我一直安慰自己,他們只是感情好史简,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布乃秀。 她就那樣靜靜地躺著,像睡著了一般圆兵。 火紅的嫁衣襯著肌膚如雪跺讯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天衙傀,我揣著相機(jī)與錄音抬吟,去河邊找鬼。 笑死统抬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播聪建,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼钙畔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了金麸?” 一聲冷哼從身側(cè)響起擎析,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挥下,沒想到半個(gè)月后揍魂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棚瘟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年现斋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偎蘸。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庄蹋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迷雪,到底是詐尸還是另有隱情限书,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布章咧,位于F島的核電站倦西,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赁严。R本人自食惡果不足惜调限,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望误澳。 院中可真熱鬧耻矮,春花似錦、人聲如沸忆谓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)倡缠。三九已至哨免,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昙沦,已是汗流浹背琢唾。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盾饮,地道東北人采桃。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓懒熙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親普办。 傳聞我的和親對(duì)象是個(gè)殘疾皇子工扎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

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

  • 本文適用的讀者 本文寫給有一定Promise使用經(jīng)驗(yàn)的人,如果你還沒有使用過Promise衔蹲,這篇文章可能不適合你肢娘,...
    HZ充電大喵閱讀 7,299評(píng)論 6 19
  • Promise的含義: ??Promise是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和...
    呼呼哥閱讀 2,167評(píng)論 0 16
  • 你不知道JS:異步 第三章:Promises 在第二章舆驶,我們指出了采用回調(diào)來表達(dá)異步和管理并發(fā)時(shí)的兩種主要不足:缺...
    purple_force閱讀 2,058評(píng)論 0 4
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持橱健,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠沙廉,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 11,025評(píng)論 26 95
  • JavaScript里通常不建議阻塞主程序拘荡,尤其是一些代價(jià)比較昂貴的操作,如查找數(shù)據(jù)庫(kù)蓝仲,下載文件等操作俱病,應(yīng)該用異步...
    張歆琳閱讀 2,752評(píng)論 0 12