gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

es6回調地獄是什么

在es6中,回調地獄就是多層回調函數相互嵌套,即回調函數中嵌套回調函數的情況;它是為了實現代碼順序執行而出現的一種操作,它會造成我們的代碼可讀性非常差,后期不好維護。es6中使用promise來解決回調地獄的問題。

es6回調地獄是什么

本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

前言

在正式了解“回調地獄”之前,我們先了解兩個概念:

1、回調函數

當一個函數作為參數傳入另一個參數中,并且它不會立即執行,只有當滿足一定條件后該函數才可以執行,這種函數就稱為回調函數。我們熟悉的定時器和Ajax中就存在有回調函數:

setTimeout(function(){   //function(){console.log('執行了回調函數')}就是回調函數,它只有在3秒后才會執行 	console.log('執行了回調函數'); },3000)  //3000毫秒
登錄后復制

這里的回調函數是function(){console.log('執行了回調函數')},在滿足時間3秒后執行。

//1.創建異步對象 			var xhr=new XMLHttpRequest();       //2.綁定監聽事件(接收請求) 			xhr.onreadystatechange=function(){ 				//此方法會被調用4次 				//最后一次,readyState==4 				//并且響應狀態碼為200時,才是我們要的響應結果 xhr.status==200 				if(xhr.readyState==4 && xhr.status==200){ 					//把響應數據存儲到變量result中 					var result=xhr.responseText; 					console.log(result); 				} 			}       //3.打開鏈接(創建請求) 			xhr.open("get","/demo/ajaxDemo",true);       //4.發送請求 			xhr.send();
登錄后復制

這里的回調函數是xhr.onreadystatechange綁定的函數,在xhr.send()發送請求并拿到響應后執行。

2、異步任務

與之相對應的概念是“同步任務”,同步任務在主線程上排隊執行,只有前一個任務執行完畢,才能執行下一個任務。異步任務不進入主線程,而是進入異步隊列,前一個任務是否執行完畢不影響下一個任務的執行。同樣,還拿定時器作為異步任務舉例:

setTimeout(function(){     console.log('執行了回調函數'); },3000) console.log('111');
登錄后復制

如果按照代碼編寫的順序,應該先輸出“執行了回調函數”,再輸出“111”。但實際輸出為:
es6回調地獄是什么
這種不阻塞后面任務執行的任務就叫做異步任務。

接下來讓我們看看什么是回調地獄。

一、回調地獄是什么?

根據前面我們可以得出一個結論:存在異步任務的代碼,不能保證能按照順序執行,那如果我們非要代碼順序執行呢?

比如我要說一句話,語序必須是下面這樣的:武林要以和為貴,要講武德,不要搞窩里斗。
我必須要這樣操作,才能保證順序正確:

        setTimeout(function () {  //第一層             console.log('武林要以和為貴');             setTimeout(function () {  //第二程                 console.log('要講武德');                 setTimeout(function () {   //第三層                     console.log('不要搞窩里斗');                 }, 1000)             }, 2000)         }, 3000)
登錄后復制

es6回調地獄是什么

可以看到,代碼中的回調函數套回調函數,居然套了3層,這種回調函數中嵌套回調函數的情況就叫做回調地獄。

總結一下,回調地獄就是為是實現代碼順序執行而出現的一種操作,它會造成我們的代碼可讀性非常差,后期不好維護。

那該如何解決回調地獄呢?

二、如何解決回調地獄

1.Promise

Promise是js中的一個原生對象,是一種異步編程的解決方案,可以替換掉傳統的回調函數解決方案。

  • Promise構造函數接收一個函數作為參數,我們需要處理的異步任務就卸載該函數體內,該函數的兩個參數是resolve,reject。異步任務執行成功時調用resolve函數返回結果,反之調用reject。

  • Promise對象的then方法用來接收處理成功時響應的數據,catch方法用來接收處理失敗時相應的數據。

  • Promise的鏈式編程可以保證代碼的執行順序,前提是每一次在than做完處理后,一定要return一個Promise對象,這樣才能在下一次then時接收到數據。

下面是實例代碼:

        function fn(str){             var p=new Promise(function(resolve,reject){                 //處理異步任務                 var flag=true;                 setTimeout(function(){                     if(flag){                         resolve(str)                     }                     else{                         reject('操作失敗')                     }                 })             })             return p;         }          fn('武林要以和為貴')         .then((data)=>{             console.log(data);             return fn('要講武德');         })         .then((data)=>{             console.log(data);             return fn('不要搞窩里斗')         })         .then((data)=>{             console.log(data);         })         .catch((data)=>{             console.log(data);         })
登錄后復制

es6回調地獄是什么
但是Promise最大的問題就是代碼冗余,原來的異步任務被Promise封裝一下,不管什么操作都用than,就會導致一眼看過去全是then…then…then…,這樣也是不利于代碼維護的。

所以下面的async/await 可以時代碼看起來更像同步代碼。

2.async/await

首先我們看async關鍵字,他作為一個關鍵字放到聲明函數前面,表示該函數為一個異步任務,不會阻塞后面函數的執行:

        async function fn(){             return '不講武德';         }         console.log(fn());
登錄后復制

es6回調地獄是什么
可以看到async函數返回數據時自動封裝為一個Promise對象。

和Promise對象一樣,處理異步任務時也可以按照成功和失敗來返回不同的數據,處理成功時用then方法來接收,失敗時用catch方法來接收數據:

        async function fn() {             var flag = true;             if (flag) {                 return '不講武德';             }             else{                 throw '處理失敗'             }         }         fn()         .then(data=>{             console.log(data);         })         .catch(data=>{             console.log(data);         })          console.log('先執行我,表明async聲明的函數是異步的');
登錄后復制

es6回調地獄是什么
當把flag設置為false是,執行結果為:
es6回調地獄是什么
async關鍵字說完了,我們看看awai關鍵字

  • await關鍵字只能在使用async定義的函數中使用
  • await后面可以直接跟一個 Promise實例對象(可以跟任何表達式,
贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
欧洲在线免费视频| 天天成人综合网| 丰满少妇大力进入| 在线观看三级网站| 91免费网站视频| 午夜啪啪小视频| 欧美激情国内自拍| 成年人网站av| 毛片毛片毛片毛| 久热精品在线观看视频| 男人插女人下面免费视频| 北条麻妃在线一区| 三级a在线观看| 一区二区三区四区毛片| 五月激情五月婷婷| 人人妻人人澡人人爽精品欧美一区| 亚洲精品成人在线播放| 天天在线免费视频| 奇米影视亚洲色图| 能看的毛片网站| 污污的视频免费| 国产盗摄视频在线观看| 免费看毛片的网址| 国产一级做a爰片久久| 欧美视频亚洲图片| 国产精品久久中文字幕| 熟妇人妻无乱码中文字幕真矢织江| 欧美黑人又粗又大又爽免费| 手机免费看av网站| 久久久久99精品成人片| 中文字幕日本最新乱码视频| 中文字幕22页| 日韩黄色短视频| 三级a在线观看| 奇米777四色影视在线看| 日韩av一二三四区| 日韩精品视频网址| 欧美韩国日本在线| 超薄肉色丝袜足j调教99| 国产精品宾馆在线精品酒店| 小早川怜子一区二区三区| av女优在线播放| 亚洲第一区第二区第三区| av免费观看国产| 视频区 图片区 小说区| 日本精品免费在线观看| 国产精品自拍合集| 亚洲一级片av| 一区二区三区免费播放| 97超碰在线人人| 日本丰满少妇黄大片在线观看| 久热免费在线观看| 日本一本中文字幕| 无码毛片aaa在线| 久久久久国产一区| 亚洲 高清 成人 动漫| 日本美女爱爱视频| 亚洲天堂av一区二区三区| 成人在线观看a| 国产视频九色蝌蚪| 青青草视频在线免费播放| 日本福利视频在线观看| 在线播放免费视频| 日韩av片免费观看| 亚洲高清视频免费| 亚洲黄色片免费| 亚洲综合123| 亚洲免费成人在线视频| av亚洲天堂网| 在线免费视频一区| 亚洲精品20p| www.色就是色.com| 黄瓜视频免费观看在线观看www| youjizzxxxx18| 亚洲久久中文字幕| 中文字幕第一页在线视频| 手机精品视频在线| 色一情一乱一乱一区91| 日韩精品一区二区三区电影| 日韩一级免费看| 久久综合久久网| 国产高清精品在线观看| 免费在线观看的毛片| 性欧美1819| 黄色a级三级三级三级| 久久国产精品免费观看| 精品无码国产一区二区三区av| 中文字幕网av| 日韩va在线观看| 国产最新免费视频| 看欧美ab黄色大片视频免费| 黄色国产小视频| 中日韩av在线播放| 国产卡一卡二在线| 日日碰狠狠添天天爽超碰97| 韩国日本在线视频| 亚洲最新免费视频| 美女日批免费视频| 成年网站免费在线观看| 男人天堂新网址| 农村妇女精品一二区| 男女啪啪的视频| 久久精品午夜福利| 成年在线观看视频| 日本美女高潮视频| 美女扒开大腿让男人桶| 色综合天天色综合| 水蜜桃色314在线观看| 日本女优爱爱视频| 久久av高潮av| 伊人色在线视频| 韩国一区二区av| 国产精品视频一二三四区| 不卡av免费在线| 久久久久久久久久网| 国产精品久久久久久久99| 日韩在线综合网| 色哺乳xxxxhd奶水米仓惠香| 亚洲黄色av网址| 日韩a∨精品日韩在线观看| 午夜影院免费版| 成人不卡免费视频| 黄色三级视频在线| 无罩大乳的熟妇正在播放| 成人免费看片视频在线观看| 久久久久国产一区| av无码精品一区二区三区| 国产最新免费视频| 日本a视频在线观看| 免费视频爱爱太爽了| 在线观看av的网址| a级黄色片网站| 婷婷视频在线播放| 在线a免费观看| 亚洲在线观看网站| 久久艹这里只有精品| 中文字幕永久有效| 午夜精品久久久久久久99热影院| 青青在线免费观看视频| 国产又黄又猛视频| 天天操天天摸天天爽| 天天爽夜夜爽一区二区三区| 性猛交ⅹ×××乱大交| 日本特黄a级片| 亚洲欧美天堂在线| 欧美 日韩 国产精品| 国产尤物av一区二区三区| 免费人成自慰网站| 国产综合免费视频| 色婷婷综合网站| 国产高潮呻吟久久久| www.欧美黄色| 国产欧美在线一区| 日本77777| 欧美精品卡一卡二| 18岁视频在线观看| 亚洲天堂一区二区在线观看| 女同性恋一区二区| 日本午夜激情视频| 国产成人av影视| 五月天综合婷婷| 欧美大片在线播放| 日本在线观看免费视频| 手机在线视频你懂的| 成人在线免费观看av| 亚洲一二区在线观看| 妞干网在线观看视频| 欧美伦理片在线看| 人妻av无码专区| 91n.com在线观看| 日本香蕉视频在线观看| 亚洲人成无码www久久久| 国产经典久久久| 国产真实乱子伦| 国产黄色激情视频| 国产无遮挡猛进猛出免费软件| 欧美激情亚洲天堂| 做a视频在线观看| 97国产精东麻豆人妻电影| 午夜激情视频网| av视屏在线播放| 真实国产乱子伦对白视频| 亚洲天堂国产视频| www.国产区| 91视频 -- 69xx| 奇米777四色影视在线看| 亚洲36d大奶网| 草草草在线视频| 夜夜添无码一区二区三区| 亚洲视频在线不卡| 天天干天天综合| 国产性生交xxxxx免费| 日本男女交配视频| 男女裸体影院高潮| 日本女人高潮视频| 在线a免费观看| 伊人色在线观看| 中国黄色片一级| 亚洲第一区第二区第三区| 亚洲精品视频导航|