亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

ES6 Promise對象的應用實例分析

2024-05-06 16:52:50
字體:
來源:轉載
供稿:網友

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

The Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value.

Promise 對象用于一個異步操作的最終完成(或失?。┘捌浣Y果值的表示。簡單點說,它就是用于處理異步操作的,異步處理成功了就執行成功的操作,異步處理失敗了就捕獲錯誤或者停止后續操作。

在promise之前處理異步回調的方式

function asyncFun(a,b,callback) {   setTimeout(function () {    callback(a+b);   },200);  }  asyncFun(1,2, function (res) {   if(res > 2) {    asyncFun(res, 2, function (res) {     if(res > 4) {      asyncFun(res, 2, function (res) {       console.log('ok');       console.log(res);      })     }    })   }  });

從上面可以看出所謂的”回調地獄”的可怕

使用promise來優雅的處理異步

function asyncFun(a,b) { return new Promise(function (resolve, reject) {  setTimeout(function() {   resolve(a + b);  },200); })}asyncFun(1,2).then(function (res) { if(res > 2) {  return asyncFun(res, 2); }}).then(function (res) { if(res > 4) {  return asyncFun(res, 2); }}).then(function (res) { console.log('ok'); console.log(res);}).catch(function (error) { console.log(error);});

使用promise處理內部異常的舉例

function asyncFun(a,b) { return new Promise(function (resolve, reject) {  // 模擬異常判斷  if(typeof a !== 'number' || typeof b !== 'number') {   reject(new Error('no number'));  }  setTimeout(function() {   resolve(a + b);  },200); })}asyncFun(1,2).then(function (res) { if(res > 2) {  return asyncFun(res, 2); }},function (err) { console.log('first err: ', err);}).then(function (res) { if(res > 4) {  return asyncFun(res, 'a'); }},function (err) { console.log('second err: ', err);}).then(function (res) { console.log('ok'); console.log(res);},function (err) { console.log('third err: ', err);});

從上面可以看出通過then的第二個回調函數處理promise對象中的異常,通過reject返回異常的promise對象

通過catch統一處理錯誤,通過finally執行最終必須執行的邏輯

function asyncFun(a,b) { return new Promise(function (resolve, reject) {  // 模擬異常判斷  if(typeof a !== 'number' || typeof b !== 'number') {   reject(new Error('no number'));  }  setTimeout(function() {   resolve(a + b);  },200); })}asyncFun(1,2).then(function (res) { if(res > 2) {  return asyncFun(res, 2); }}).then(function (res) { if(res > 4) {  return asyncFun(res, 'a'); }}).then(function (res) { console.log('ok'); console.log(res);}).catch(function (error) { console.log('catch: ', error);}).finally(function () { console.log('finally: ', 1+2);});

通過Promise.all()靜態方法來處理多個異步

function asyncFun(a,b) { return new Promise(function (resolve, reject) {  setTimeout(function() {   resolve(a + b);  },200); })}var promise = Promise.all([asyncFun(1,2), asyncFun(2,3), asyncFun(3,4)])promise.then(function (res) { console.log(res); // [3, 5, 7]});

通過Promise.race()靜態方法來獲取多個異步中最快的一個

function asyncFun(a,b,time) { return new Promise(function (resolve, reject) {  setTimeout(function() {   resolve(a + b);  },time); })}var promise = Promise.race([asyncFun(1,2,10), asyncFun(2,3,6), asyncFun(3,4,200)])promise.then(function (res) { console.log(res); // 5});

通過Promise.resolve() 靜態方法來直接返回成功的異步對象

var p = Promise.resolve('hello');p.then(function (res) { console.log(res); // hello});

等同于,如下:

var p = new Promise(function (resolve, reject) { resolve('hello2');})p.then(function (res) { console.log(res); // hello2});

通過Promise.reject() 靜態方法來直接返回失敗的異步對象

var p = Promise.reject('err')p.then(null, function (res) { console.log(res); // err});

等同于,如下:

var p = new Promise(function (resolve, reject) { reject('err2');})p.then(null, function (res) { console.log(res); // err});

通過一個小例子來測試Promise在面向對象中應用

'use strict';class User{ constructor(name, password) {  this.name = name;  this.password = password; } send() {  let name = this.name;  return new Promise(function (resolve, reject) {   setTimeout(function () {    if(name === 'leo') {     resolve('send success');    }else{     reject('send error');    }   });  }); } validatePwd() {  let pwd = this.password;  return new Promise(function (resolve, reject) {   setTimeout(function () {    if(pwd === '123') {     resolve('validatePwd success');    }else{     reject('validatePwd error');    }   });  }) }}let user1 = new User('Joh');user1.send() .then(function (res) {  console.log(res); }) .catch(function (err) {  console.log(err); });let user2 = new User('leo');user2.send() .then(function (res) {  console.log(res); }) .catch(function (err) {  console.log(err); });let user3 = new User('leo', '123');user3.validatePwd() .then(function (res) {  return user3.validatePwd(); }) .then(function (res) {  console.log(res); }) .catch(function(error) {  console.log(error); });let user4 = new User('leo', '1234');user4.validatePwd() .then(function (res) {  return user4.validatePwd(); }) .then(function (res) {  console.log(res); }) .catch(function(error) {  console.log(error); });

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


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人黄色大片在线免费观看| 91精品久久久久| 一区二区三区www| 亚洲精品中文字幕av| 亚洲欧美福利视频| 成人免费淫片视频软件| 日韩精品高清在线| 国产香蕉精品视频一区二区三区| 欧美有码在线观看视频| 欧美最猛性xxxxx亚洲精品| 成人在线播放av| 亚洲欧洲一区二区三区久久| 亚洲精品suv精品一区二区| 欧美日韩一二三四五区| 亚洲欧洲在线免费| 成人激情视频在线| 国产精品免费久久久久影院| 在线观看久久久久久| 日本久久久久亚洲中字幕| 亚洲偷欧美偷国内偷| 91久久久精品| 国产欧美日韩丝袜精品一区| 欧美日韩中文字幕日韩欧美| 中文字幕亚洲综合| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品久久久久国产a级| 国产极品精品在线观看| 97久久伊人激情网| 日韩av在线网| 4k岛国日韩精品**专区| 欧美性xxxx极品hd欧美风情| 色一区av在线| 亚洲欧美中文在线视频| 中文字幕av一区二区| 亚洲在线免费观看| 91九色单男在线观看| 精品久久久久久亚洲国产300| 久久成人一区二区| 日韩欧美第一页| 日韩www在线| 久久夜色精品国产| 精品国产91久久久久久老师| 国产精品久久久久aaaa九色| 国产精品视频久久| 国产一区二区丝袜高跟鞋图片| 高清欧美电影在线| 国产精品女主播视频| 亚洲人免费视频| 91系列在线观看| 秋霞午夜一区二区| 91国内产香蕉| 日韩欧美一区二区在线| 欧美日韩国产一中文字不卡| 国产精品一区二区久久久| 欧美精品亚州精品| 最新的欧美黄色| 国产精品福利在线| 日韩中文有码在线视频| 国产日韩精品在线观看| 精品国产999| 国产精品91久久| 国产精品99久久久久久www| 欧美视频在线观看免费| 欧美日韩国产成人| 亚洲精品久久久久久久久久久久久| 欧美成人精品激情在线观看| 在线观看国产精品日韩av| 久久精品电影网站| 免费成人高清视频| 亚洲国产精品久久久久久| 5252色成人免费视频| 国产精品网址在线| 91精品国产自产在线观看永久| 亚洲片av在线| 91色p视频在线| 粉嫩av一区二区三区免费野| 久久综合五月天| 精品欧美激情精品一区| 美女精品视频一区| 欧美猛少妇色xxxxx| 欧洲s码亚洲m码精品一区| 成人国产精品av| 一区二区三区精品99久久| 精品久久久久久中文字幕大豆网| 久久91超碰青草是什么| 国语自产精品视频在线看一大j8| 麻豆一区二区在线观看| 欧美日在线观看| 91免费看片在线| 亚洲成色www8888| 欧美激情亚洲激情| 国产欧美日韩精品专区| 精品亚洲一区二区| 欧美日韩国产中字| 秋霞成人午夜鲁丝一区二区三区| 精品免费在线观看| 久久韩剧网电视剧| 国产亚洲欧美日韩精品| 午夜精品久久久久久久男人的天堂| 色偷偷88888欧美精品久久久| 精品欧美国产一区二区三区| 亚洲欧美中文字幕在线一区| 日韩av网址在线| 国产精品视频白浆免费视频| 成人免费淫片aa视频免费| 日韩电影大片中文字幕| 91社区国产高清| 亚洲精品日韩激情在线电影| 在线观看日韩视频| 亚洲男人天堂手机在线| 欧美日韩aaaa| 亚洲美女精品成人在线视频| 国产一区二区三区在线观看网站| 久久不射电影网| 亚洲一区二区久久久久久久| 久久99精品久久久久久琪琪| 日韩av黄色在线观看| 欧美在线视频一区二区| 日韩高清免费观看| 国内精品伊人久久| 国产精品第七十二页| 国产精品久久久久影院日本| 日韩av不卡在线| 高清亚洲成在人网站天堂| 国产精品久久久久久av下载红粉| 欧美另类交人妖| 日韩精品一区二区视频| 国产精品久久久久久久7电影| 色黄久久久久久| 精品国产鲁一鲁一区二区张丽| 日本午夜人人精品| 成人午夜激情免费视频| 91亚洲精品在线| 午夜精品99久久免费| 日韩精品免费视频| 久久精品视频在线播放| 欧美午夜精品久久久久久浪潮| 庆余年2免费日韩剧观看大牛| 在线观看久久av| 日韩在线视频免费观看| 亚洲香蕉伊综合在人在线视看| 欧美成年人视频网站欧美| 欧美激情aaaa| 欧美电影在线观看网站| 精品国产一区二区三区在线观看| 中文欧美日本在线资源| 亚洲天堂影视av| 亚洲国产精品久久久久秋霞蜜臀| 国产精品v日韩精品| 欧美激情xxxx| 久久亚洲精品国产亚洲老地址| 国产视频久久久久| 91在线免费网站| 欧美最顶级丰满的aⅴ艳星| 福利微拍一区二区| 色系列之999| 日本精品久久久| 成人激情视频在线| 日韩精品视频在线观看免费| 7777精品视频| 国产在线a不卡| 欧美激情第一页xxx| 一道本无吗dⅴd在线播放一区| 久久av中文字幕|