最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ES6中異步對象Promise用法詳解

 更新時間:2019年07月31日 09:19:08   作者:xiaxiaoxian  
這篇文章主要介紹了ES6中異步對象Promise用法,對比ES5分析了ES6異步方法Promise的使用技巧,并結(jié)合實例形式分析了連續(xù)使用Promise對象、Promise捕獲錯誤的catch()、以及Promise的高級用法,需要的朋友可以參考下

本文實例講述了ES6中異步對象Promise用法。分享給大家供大家參考,具體如下:

回憶一下ES5中的怎么使用異步方法

// es5中的異步回調(diào)
  let ajax = function(callback){
   console.log('執(zhí)行')  // 執(zhí)行
   setTimeout(() => {
    callback&&callback.call();
   }, 1000)
  };
  ajax(function(){
   console.log('hello') // 1s后打印hello
  });

使用ES6的Promise的方法:

let ajax = function(){
   console.log('執(zhí)行2'); // 執(zhí)行2
   return new Promise((resolve,reject)=>{
    setTimeout(() => {
     resolve() // 執(zhí)行下一步操作, reject  // 中斷當前的操作
    },5000)
   })
}
ajax().then(()=>{
   console.log('promise','timeout2')  // 5s后打印  promise timeout2
})

連續(xù)使用Promise對象:

let ajax = function(){
   console.log('執(zhí)行3');
   return new Promise((resolve,reject)=>{
    setTimeout(() => {
     resolve();
    },5000)
   })
}
ajax().then(function(){
   return new Promise(function(resolve,reject){
    setTimeout(() => {
     resolve()
    }, 2000)
   })
}).then(function(){
   console.log('timeouk3') // 7s后打印timeouk3
})

Promise捕獲錯誤的catch( )

// catch 捕獲錯誤
let ajax = function(num){
   console.log('執(zhí)行4');
   return new Promise(function(resolve,reject){
    if(num>=5){
     resolve();
    }else{
     throw new Error('傳入的數(shù)字比5小')
    }
   })
}
ajax(4).then(function(){
   console.log('log',4);
}).catch(function(err){
   console.log('catch',err); // catch Error: 傳入的數(shù)字比5小
})

Promise的兩種高級用法

1.Promise.all( )

function loadImg(src){
   return new Promise((resolve,reject)=>{
    let img = document.createElement('img');
    img.src = src;
    img.onload = function(){
     resolve(img);
    }
    img.onerror = function(err){
     reject(err);
    }
   })
}
// 對所有的圖片進行遍歷
function showImgs(imgs){
   console.log(imgs);
   imgs.forEach(function(img){
    document.body.appendChild(img);
   })
}
// promise.all()的用法
Promise.all([
   loadImg('http://yanshi.sucaihuo.com/modals/0/23/small.jpg'),
   loadImg('http://yanshi.sucaihuo.com/modals/0/20/small.jpg'),
   loadImg('http://yanshi.sucaihuo.com/modals/0/2/small.jpg')
]).then(showImgs)
/**解析:
把多個promise實例當做一個promise實例,當所有的promise實例發(fā)生變化后
新的promise實例才會發(fā)生變化
*/

2.Promise.race( )

// Promise 先加載 有一個圖片加載完就先添加到頁面
  function loadImg(src){
   return new Promise((resolve,reject)=>{
    let img = document.createElement('img');
    img.src = src;
    img.onload = function(){
     resolve(img);
    }
    img.onerror = function(err){
     reject(err);
    }
   })
  }
  function showImgs(img){
   let p = document.createElement('p');
   p.appendChild(img);
   document.body.appendChild(p);
  }
  // promise.race()的用法 只要有一個網(wǎng)速好的加載完,其他的就不加載了
  Promise.race([
   loadImg('http://yanshi.sucaihuo.com/modals/0/23/small.jpg'),
   loadImg('http://yanshi.sucaihuo.com/modals/0/20/small.jpg'),
   loadImg('http://yanshi.sucaihuo.com/modals/0/2/small.jpg')
  ]).then(showImgs)
 }

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • javascript Promise簡單學習使用方法小結(jié)

    javascript Promise簡單學習使用方法小結(jié)

    下面小編就為大家?guī)硪黄猨avascript Promise簡單學習使用方法小結(jié)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • JavaScript Konami Code 實現(xiàn)代碼

    JavaScript Konami Code 實現(xiàn)代碼

    JavaScript Konami Code 實現(xiàn)代碼
    2009-07-07
  • 微信小程序開發(fā)中組件的生命周期詳細介紹

    微信小程序開發(fā)中組件的生命周期詳細介紹

    生命周期是指一個對象從創(chuàng)建→>運行>銷毀的整個階段,強調(diào)的是一個時間段,文中介紹了小程序中組件的生命周期,需要的朋友可以參考下
    2022-08-08
  • bootstrap table支持高度百分比的實例代碼

    bootstrap table支持高度百分比的實例代碼

    這篇文章給大家介紹了bootstrap table支持高度百分比的實例代碼,通過更改BootstrapTable.prototype.resetView 方法,以支持高度百分比定義,適應(yīng)不同高度屏幕,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-02-02
  • jscript之List Excel Color Values

    jscript之List Excel Color Values

    jscript之List Excel Color Values...
    2007-06-06
  • JS中fetch()用法實例詳解

    JS中fetch()用法實例詳解

    在JS中使用fetch更加高效地進行網(wǎng)絡(luò)請求,下面這篇文章主要給大家介紹了關(guān)于JS中fetch()用法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • javascript 進度條的幾種方法

    javascript 進度條的幾種方法

    在實際項目中,進度條的用處還是非常大的。這篇文章主要是要介紹幾種制作進度條的方法。通過學習,你也能制作屬于自己的進度條了。
    2009-05-05
  • Javascript 顏色漸變效果的實現(xiàn)代碼

    Javascript 顏色漸變效果的實現(xiàn)代碼

    在搭建博主博客的時候,尋思著做一些效果,看到菜單,就想是不是可以做一下顏色的漸變,增加一點動態(tài)的感覺。有個jquery的插件,效果相當不錯,不過博主還是打算自立更生寫一下,看看能不能實現(xiàn)
    2013-10-10
  • Svelte反應(yīng)式變量和函數(shù)工作原理詳解

    Svelte反應(yīng)式變量和函數(shù)工作原理詳解

    這篇文章主要為大家介紹了Svelte反應(yīng)式變量和函數(shù)工作原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • chrome瀏覽器不支持onmouseleave事件的解決技巧

    chrome瀏覽器不支持onmouseleave事件的解決技巧

    發(fā)現(xiàn)給div加的 onmouseleave事件在chrome 中不起效果,下面與大家分享下具體的解決方法,不會的朋友可以了解下哈,希望對大家有所幫助
    2013-05-05

最新評論

古田县| 呼伦贝尔市| 湖北省| 遂平县| 庄河市| 昔阳县| 南丰县| 两当县| 威远县| 黑河市| 阿克陶县| 通化市| 疏勒县| 黑水县| 固始县| 丰台区| 百色市| 海口市| 武川县| 林州市| 农安县| 巴彦淖尔市| 双辽市| 崇文区| 晋江市| 北辰区| 南江县| 开江县| 揭阳市| 陇川县| 柳江县| 新泰市| 稻城县| 通山县| 青州市| 田东县| 博野县| 益阳市| 乌鲁木齐县| 河间市| 博客|