精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Promise對象的基礎入門學習

開發 前端
Promise對象是CommonJS工作組提出的規范。Promise原本只是社區提出的構想,一些外部函數庫率先實現了該功能,ES6中將其寫入了語言標準。Promise是啥,它就是一個javascript中一個對象,起著代理作用,充當異步操作與回調函數之間的中介。

[[171668]]

今天來學習下Promise吧!其實這在筆試上也是一個考點。

基本介紹

Promise對象是CommonJS(熟悉的名字吧- -)工作組提出的規范.Promise原本只是社區提出的構想,一些外部函數庫率先實現了該功能,ES6中將其寫入了語言標準.

目的:為異步操作提供統一接口

Promise是啥,它就是一個javascript中一個對象,起著代理作用,充當異步操作與回調函數之間的中介。

避免類似于

 

這種嵌套地獄的產生.讓我們的代碼變得更加簡單易讀使用了Promise,大家都說好

  1. (new Promise(f1).then(f2)); 

總結:Promise使得異步操作的向下發展變成橫向發展,程序流程變得清晰,易于閱讀。

基本思想

  • 異步任務返回一個Promise對象,它有三種狀態

1.pending(未完成)

2.resolved,fulfilled(已完成)

3.rejected(失敗)

  • 它有兩種變化途徑

1.pending --> resolved/fulfilled

2.pending --> rejected

  • 它有兩種結果

1.異步操作成功,返回一個值,狀態變為resolved

2.異步操作失敗,拋出一個錯誤,狀態變為rejected

Promise使用.then()方法添加回調函數,then接收兩個回調函數,***個為成功時的回調函數,另一個為失敗時的回調函數.主要為狀態改變時調用相對的回調函數.

而且then可以鏈式調用。

基本使用

Promise構造函數接受一個函數作為參數,而該函數兩個參數分別是resolve和reject.它們由JS引擎提供,不需要自己部署.

  1. Promise(function(resolve,reject){}) 

resolve函數作用為:將Promise對象從未完成變為成功(Pending->Resolved),異步操作成功時調用,并將異步操作的結果作為參數傳遞出去.

reject函數作用為:將Promise對象從未完成變為失敗(Pending->Rejected),異步操作失敗時調用,并將異步操作報出的錯誤作為參數傳遞出去.

Promise.then()方法可以用于指定Resolved狀態和Reject狀態的回調函數.

  1. promise.then(function(value){//成功+_+!},function(value){//失敗Q_Q}); 

我們只想對異常進行處理時可以采用promise.then(undefined, onRejected)這種方式,或者promise.catch(onRejected)

!注意!此處有坑,接下來在深入節會進行講解

Promise.all()方法接收一個promise對象的數組為參數,當這個數組中所有的Promise對象全部變成resolve/reject狀態的時候,才會調用.then方法,其中傳入的promise是同時開始,并行執行的。

  1. promise.all([promise1,promise2,.....]); 

Promise.race()方法和Promise.all()方法一樣接收一個promise對象的數組作為參數,但是數組中有一個promise對象進入fulfilled或rejected狀態,就會開始后續處理. 

  1. promise.race([promise1,promise2,.....]); 

相關的語法糖 

  1. Promise.resolve(42); 
  2. //等價于 
  3. new Promise(function(resolve){ 
  4.     resolve(42); 
  5. }); 
  6.  
  7. Promise.reject(new Error("出錯了")); 
  8. //等價于 
  9. new Promise(function(resolve,reject){ 
  10.     reject(new Error("出錯了")); 
  11. });  

深入

關于Thenable對象

這是非常類似于Promise的東西,擁有.then方法.

其中比較經典的例子就是jQuery.ajax()返回的值就是thenable的. 

  1. var promise = Promise.resolve($.ajax('/json/comment.json')); 

這樣就可以將thenable對象轉化為promise對象

傳送門:Promise.resolve()

關于promise設計:總是異步操作

看代碼就能明白這個地方的問題了. 

  1. var promise = new Promise(function (resolve){ 
  2.     console.log("inner promise"); // 1 
  3.     resolve(42); 
  4. }); 
  5. promise.then(function(value){ 
  6.     console.log(value); // 3 
  7. }); 
  8. console.log("outer promise"); // 2 
  9. //結果是 
  10. /* 
  11. inner promise // 1 
  12. outer promise // 2 
  13. 42            // 3 
  14. */  

可以看出,即使我們調用promise.then時promise對象已經確定狀態,Promise也會以異步的方式調用回調函數,這就是Promise設計上的規定方針.

關于調用then/catch

每次調用then/catch,都會返回一個promise對象,這一點上我們通過使用===就可以判斷出來每次promise對象其實都是不一樣的

then和catch的錯誤處理區別

這點和上一點聯合起來很容易理解

直接上圖吧,來自于JavaScript Promise迷你書(中文版)

 在結合我們的代碼吧 

  1. // <1> onRejected不會被調用 
  2. function badMain(onRejected) { 
  3.     return Promise.resolve(42).then(throwError, onRejected); 
  4. // <2> 有異常發生時onRejected會被調用 
  5. function goodMain(onRejected) { 
  6.     return Promise.resolve(42).then(throwError).catch(onRejected); 
  7.  

onFullfilled中發生的錯誤,如在<1>里面throwError中的錯誤,是不會導致onRejected的執行(捕獲異常)的,我們只能通過后面的catch方法才能捕獲.

基本應用

不兼容方面

  1. 不兼容就是用polyfill吧
  2. 關于IE8以及以下版本中,catch會由于在ES3中為保留字,導致identifier not found錯誤,對此我們可以通過["catch"]或者then(undefined,function(){})來進行catch,而某些類庫中,采用了caught作為函數名來規避該問題.值得注意的是,有很多壓縮工具中自帶了.catch轉["catch"]

應用示例:

加載圖片 

  1. var preloadImage = function(path){ 
  2.   return new Promise(function(resolve,reject){ 
  3.     var image = new Image(); 
  4.     image.onload = resolve; 
  5.     image.onerror = reject; 
  6.     image.src = path; 
  7.   }) 
  8. preloadImage("https://dn-anything-about-doc.qbox.me/teacher/QianDuan.png").then(function(){ 
  9.   alert("圖片加載成功"); 
  10. },function(){ 
  11.   alert("圖片加載失敗"); 
  12. })  

Ajax操作 

  1. function search(term) { 
  2.     var url = 'http://example.com/search?q=' + term; 
  3.     var xhr = new XMLHttpRequest(); 
  4.     var result; 
  5.     var p = new Promise(function(resolve, reject) { 
  6.         xhr.open('GET', url, true); 
  7.         xhr.onload = function(e) { 
  8.             if (this.status === 200) { 
  9.                 result = JSON.parse(this.responseText); 
  10.                 resolve(result); 
  11.             } 
  12.         }; 
  13.         xhr.onerror = function(e) { 
  14.             reject(e); 
  15.         }; 
  16.         xhr.send(); 
  17.     }); 
  18.     return p; 
  19. search("Hello World").then(console.log, console.error);  

回到最初吧,其實Promise對象優點還是在于規范的鏈式調用,可以清晰看出程序流程.并且對于錯誤還能定義統一的處理方法。

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2021-04-22 22:26:13

Java語言IT

2018-07-11 13:33:43

大數據人工智能Hadoop

2010-06-18 09:57:46

C#UML基礎

2021-01-28 08:34:30

Java對象定義

2021-01-18 08:52:28

Java對象多態

2011-09-27 13:52:41

2009-07-03 14:31:43

學習JSP

2020-12-24 08:36:14

JavaJava基礎

2024-07-09 09:33:18

2017-09-04 22:41:31

深度學習矩陣運算代碼

2017-09-18 10:48:06

深度學習零基礎入門

2012-02-29 00:00:43

Linux鳥哥

2011-02-24 11:10:33

Konqueror

2020-07-29 17:35:08

Promise源碼前端

2011-07-06 14:12:14

Objective-C

2009-06-17 09:58:48

JBoss Rules

2023-09-15 15:31:23

異步編程Promise

2022-02-22 19:04:01

Perl編程語言

2020-11-16 16:13:06

網絡安全互聯網滲透測試

2022-01-21 08:50:15

Promise任務隊列前端
點贊
收藏

51CTO技術棧公眾號

清纯唯美亚洲经典中文字幕| 国产福利视频在线观看| 99亚洲视频| 亚洲午夜未满十八勿入免费观看全集| 日韩肉感妇bbwbbwbbw| 日本三级视频在线播放| 成人av在线播放网址| 国产精品99久久久久久久久| 国产一区二区三区在线视频观看| 精品丝袜久久| 欧美日韩和欧美的一区二区| 很污的网站在线观看| 高清毛片在线看| 高清成人免费视频| 国产精品色视频| 国产无遮挡又黄又爽在线观看| 欧洲福利电影| 精品va天堂亚洲国产| 怡红院亚洲色图| 国内精彩免费自拍视频在线观看网址 | www.日韩一区| 欧美日韩在线大尺度| 国产一区二区三区在线免费观看 | 久久伊人91精品综合网站| 国产十八熟妇av成人一区| 日韩电影免费观看高清完整版在线观看 | 色综合久久av| 午夜福利理论片在线观看| 久久 天天综合| 国产suv精品一区二区三区88区| 妺妺窝人体色www婷婷| 999国产精品永久免费视频app| 国产视频久久久久| 91丝袜在线观看| 视频二区欧美| 日韩一级高清毛片| 久久久久久综合网| 国产伊人久久| 91国偷自产一区二区三区观看| 久久久久久久久久网| 国产经典三级在线| 亚洲黄色av一区| 欧美三级午夜理伦三级老人| 91av资源在线| 国产精品久久久久久久裸模 | 国产一二在线观看| 久久综合久久综合久久综合| 国内精品视频免费| 亚洲美女综合网| 国产激情一区二区三区| 亚洲一区二区三区成人在线视频精品 | 在线免费视频一区二区| 国产视频在线视频| 美女色狠狠久久| 在线精品视频小说1| 苍井空浴缸大战猛男120分钟| 少妇淫片在线影院| 精品国产乱码久久久久久天美 | 秋霞伦理一区| 韩国毛片一区二区三区| 尤物九九久久国产精品的特点| 黄瓜视频污在线观看| 动漫一区在线| 国产欧美日韩在线看| 日本在线观看不卡| 一级免费在线观看| 台湾佬综合网| 精品日韩在线观看| a级大片免费看| 91精品入口| 亚洲精品乱码久久久久久金桔影视| 久久撸在线视频| 成人综合日日夜夜| 日韩欧美123| 国产又粗又猛又色| 国产精品手机在线播放| 最新亚洲国产精品| www.av视频| 国产日韩欧美高清免费| 国产精品xxx视频| 97视频免费在线| 国产91精品免费| 久久久久久久久久久久久9999| 国产精品一区在线看| 亚洲欧美怡红院| 成人黄色大片网站| 午夜精品成人av| 欧美夫妻性生活| 日韩www视频| av中字幕久久| 欧美激情精品久久久久久黑人| 欧美激情亚洲综合| 毛片一区二区三区| 成人av男人的天堂| 黄色片免费在线| 亚洲欧洲制服丝袜| 久久无码高潮喷水| 国产亚洲字幕| 亚洲欧洲在线观看| 国产精品白嫩白嫩大学美女| 久久成人精品| 99久热re在线精品996热视频 | 久久精品国产精品亚洲| 日韩av一二三区| 麻豆国产欧美日韩综合精品二区| 国产精品二区三区四区| 高清在线观看av| 亚洲va在线va天堂| 免费网站在线观看黄| 久草成人在线| 国语自产精品视频在线看| 中文文字幕一区二区三三| zzijzzij亚洲日本少妇熟睡| 一区二区三区欧美成人| 在线能看的av网址| 日韩色在线观看| 国产aaaaaaaaa| 麻豆九一精品爱看视频在线观看免费| 91久久精品www人人做人人爽| 国产小视频免费在线网址| 亚洲曰韩产成在线| 亚洲国产午夜精品| 日韩国产专区| 日韩美女在线播放| 日韩一区二区三区不卡| 亚洲精品视频在线看| 男人添女人下面免费视频| 丝袜美腿综合| 777午夜精品福利在线观看| 国产精品国产av| 中文字幕成人在线观看| 日韩中文字幕三区| 琪琪久久久久日韩精品| 久久久免费高清电视剧观看| 精品国产99久久久久久宅男i| 国产精品乱码人人做人人爱| 久久九九国产视频| 日韩精品福利一区二区三区| 久久久久久亚洲精品不卡| jizz国产视频| 一区二区在线观看视频在线观看| www.久久91| 97久久夜色精品国产| 国产精品国产三级国产专播精品人| 亚洲欧美日本在线观看| 午夜精品成人在线| 国产熟女高潮一区二区三区| 91久久夜色精品国产九色| 91精品黄色| 欧美性受ⅹ╳╳╳黑人a性爽| 欧美一区二区高清| 九九热视频精品| 成人动漫一区二区三区| 国产免费黄色小视频| 久久久免费毛片| 欧美一级黑人aaaaaaa做受| 日韩偷拍自拍| 欧美亚洲日本一区| 99自拍偷拍视频| 精品亚洲国内自在自线福利| 免费观看黄色大片| 一区二区三区高清在线观看| 欧美国产日韩一区| 午夜视频免费看| 色欧美日韩亚洲| 成人小视频免费看| 国产在线精品一区二区夜色| 青青青在线观看视频| 精品国产18久久久久久洗澡| 91tv亚洲精品香蕉国产一区7ujn| 国产中文字幕在线播放| 欧美日韩电影一区| 男女免费视频网站| 26uuu精品一区二区| 亚欧在线免费观看| 欧美/亚洲一区| 国产在线精品二区| 日韩高清中文字幕一区二区| 丝袜亚洲另类欧美重口| 亚洲AV无码成人片在线观看 | 9国产精品午夜| 欧美中在线观看| 91在线导航| 欧美成人猛片aaaaaaa| 黄色免费av网站| 1000部国产精品成人观看| 亚洲av成人精品一区二区三区| 水野朝阳av一区二区三区| 中文字幕一区二区三区在线乱码 | 亚洲第一色中文字幕| 免费的毛片视频| 亚洲视频免费看| 无遮挡aaaaa大片免费看| 蜜桃视频一区二区| 欧美精品一区二区三区三州| 91嫩草亚洲精品| 久久99精品国产一区二区三区| 国产成人亚洲一区二区三区| 久久久久亚洲精品| 91在线直播| 国产偷亚洲偷欧美偷精品| 国产强被迫伦姧在线观看无码| 欧美午夜激情小视频| 亚洲熟女毛茸茸| 91美女在线视频| 国产人妖在线观看| 免费看黄色91| 成人综合视频在线| 欧美1区2区| 亚洲成人蜜桃| 亚洲另类av| 国产精品久久九九| 久久爱www.| 国产日韩欧美在线视频观看| 欧美videos另类精品| www.精品av.com| 成人福利在线| 亚洲免费中文字幕| 免费观看毛片网站| 日韩女优毛片在线| 国产伦精品一区二区三区免.费| 色狠狠色狠狠综合| 在线观看黄网站| 亚洲一二三区在线观看| 久久国产波多野结衣| 亚洲国产高清aⅴ视频| 久久亚洲AV成人无码国产野外| 粉嫩久久99精品久久久久久夜| 亚洲午夜精品一区| 蜜臀av一区二区在线免费观看 | 成人深夜福利app| 五月天激情播播| 免费黄网站欧美| 欧美自拍小视频| 久久婷婷激情| av动漫在线观看| 亚洲免费网站| 国内外成人激情视频| 中文一区二区| 免费国产a级片| 国产欧美日韩综合一区在线播放| 韩日视频在线观看| 伊人久久成人| 国产69精品久久久久999小说| 亚洲高清在线| 免费av观看网址| 亚洲欧美久久久| av片中文字幕| 丝袜诱惑制服诱惑色一区在线观看| 国产xxxxx在线观看| 美女黄网久久| 天天天干夜夜夜操| 奇米色777欧美一区二区| 久久久国产欧美| 精品在线播放免费| 性鲍视频在线观看| 国产a视频精品免费观看| jjzzjjzz欧美69巨大| 91视频在线看| 我不卡一区二区| 中文字幕在线不卡一区二区三区| 一区二区三区影视| 一区二区三区 在线观看视频| 国产第100页| 黑丝美女久久久| 久久永久免费视频| 欧美日本在线观看| 亚洲第一成年人网站| 日韩av在线免费观看| 黄色电影免费在线看| 日韩三级影视基地| 欧美亚洲天堂| 国产精品h片在线播放| 国产欧美视频在线| 国产亚洲一区二区三区在线播放| 蜜臀91精品国产高清在线观看| 亚洲电影网站| 成人影院在线| 精品国产一区二区三区无码| 欧美一级视频| 超碰在线超碰在线| 99re热视频精品| www.4hu95.com四虎| 一区二区免费在线| 亚洲精品中文字幕乱码三区91| 欧美精品自拍偷拍| 日韩在线视频免费| 在线日韩第一页| av中文字幕在线看| 国产精品视频区| 欧美黑白配在线| 一区不卡字幕| 国产亚洲亚洲| 国产xxxxhd| 国产欧美一区二区三区在线老狼| 中文字幕在线观看成人| 色先锋aa成人| 亚洲精品.www| 日韩中文字幕在线播放| 色偷偷色偷偷色偷偷在线视频| 成人情趣片在线观看免费| 欧美美女黄色| 欧美美女黄色网| 日韩精品乱码av一区二区| 在线观看亚洲免费视频| 国产精品久久国产精麻豆99网站| 粉嫩aⅴ一区二区三区| 在线观看91av| www 日韩| 欧洲亚洲在线视频| 亚洲无线观看| 中文字幕黄色大片| 日韩在线a电影| 熟妇人妻久久中文字幕| 亚洲视频一二区| 中文无码精品一区二区三区| 日韩精品极品在线观看| 免费在线国产视频| 亚洲a一级视频| 久久一区二区三区喷水| 国产日韩一区二区在线观看| 成人蜜臀av电影| 四虎永久免费在线| 欧美日韩不卡一区二区| 国产高清自拍视频在线观看| 992tv成人免费影院| 中文字幕久久精品一区二区| 国产精品美女在线播放| 久久精品久久精品| 国产又大又粗又爽的毛片| 狠狠色香婷婷久久亚洲精品| 丰满人妻一区二区三区无码av| 久久大大胆人体| 在线观看欧美| 中文字幕日韩一区二区三区| 麻豆精品久久精品色综合| 精品手机在线视频| 欧美日韩在线不卡| aaa在线免费观看| 国产精品爽爽爽爽爽爽在线观看| av在线不卡顿| www.夜夜爽| 久久久成人网| 亚洲欧美日韩一级| 国产女人18毛片水真多成人如厕 | 亚洲午夜久久久影院| 性欧美1819sex性高清| 日本10禁啪啪无遮挡免费一区二区| 香蕉久久夜色精品| 亚洲免费成人在线视频| 亚洲欧洲精品一区二区三区| 97人妻精品一区二区三区软件 | 国产精品888| 久久久夜色精品| 天天综合色天天综合色h| 无码精品黑人一区二区三区 | 国产一区二区三区免费在线 | 国产精品呻吟| 免费毛片视频网站| 欧美性视频一区二区三区| 色综合久久影院| 1卡2卡3卡精品视频| 激情久久中文字幕| 国产成人无码一区二区在线观看| 日韩欧美综合在线视频| 成人综合影院| 91中文在线观看| 91久久夜色精品国产九色| 日韩在线免费观看av| 欧美日本不卡视频| 九色91在线| 欧美视频观看一区| 久久99久久精品| 国产 日韩 欧美 成人| 亚洲久久久久久久久久| 色999久久久精品人人澡69| 日本免费a视频| 久久久无码精品亚洲日韩按摩| 久久午夜鲁丝片| 久久91亚洲人成电影网站| 老牛国内精品亚洲成av人片| 国产自偷自偷免费一区| 亚洲精品国产第一综合99久久 | 精品国产美女在线| 成人在线视频中文字幕| 男人插女人下面免费视频| 亚洲精品乱码久久久久久久久 | 欧美精品激情视频| 国产亚洲一区二区三区啪| 日韩av影视大全| 黄色一区二区三区| 黄色精品免费看| 欧美日韩视频在线一区二区观看视频| 久久99国产精品成人| 你懂的国产在线| 欧美日韩电影在线观看| 精品免费视频| 国产精品麻豆入口| 欧美精品日韩精品| 日韩av影片|