成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

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

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號
国产成人无码免费看片软件| 国产乱理伦片A级在线观看| 粉嫩少妇内射浓精VIDEOS| 丰满多毛的大隂户毛茸茸| 国产高清在线精品一区二区三区 | 西方最大但人文艺术| 性色AV一区二区三区夜夜嗨| 亚洲精品第一国产综合精品99| 阳茎伸入女人的阳道免费视频 | 正在播放重口老熟女露脸| 99热最新成人国产精品| 成人观看免费毛片爽| 国产精品青青在线观看爽香蕉| 黑人粗大猛烈XXⅩXXBB| 老头猛的挺进她莹莹的体导演是谁| 欧美JIZZ18性欧美| 色婷婷一区二区三区四区成人网| 午夜三级理论在线观看高清| 亚洲精品成人H在线观看| 综合人妻久久一区二区精品| 出差被绝伦上司侵犯中文字幕| 国产乱了真实在线观看| 久久一日本道色综合久久| 秋霞电影网免费观看| 婷婷综合久久狠狠色成人网| 亚洲MV砖码砖区2021在线| 中国熟妇人妻XXXXX| 大象成品网站1688入口官网| 国产午夜精品无码| 麻豆国产蜜桃臀视频在线观看| 日本熟妇色XXXXXBBB日本| 亚洲AV永久无码精品网站| 综合图区亚洲另类偷窥| 国产AⅤ激情无码久久久无码| 精品国产熟女成人AV| 女朋友特别闷骚很吸引别人| 天堂√在线中文最新版8| 亚洲色无码中文字幕手机在线| SUNTEK中老年妈妈| 国内AI明星造梦鞠婧祎MV| 内射少妇骚B一√| 无码日韩精品一区二区三区免费| 亚洲色欲色欲综合网站色偷偷| ワンピースのエロ官网| 小浪货腿打开水真多真紧| 一本一道波多野结衣AV一区 | 岳打开双腿开始配合交换| 亚洲综合无码无在线观看| AV片在线观看免费| 被黑人猛男连续高潮视频| 好嗨哟片在线观看| 强奷秘书吸乳免费观看| 亚洲AV无码专区在线电影成人网 | 亚洲 日韩 欧美 成人 在线观| 亚洲啪AV永久无码精品放毛片| 啊灬啊灬啊灬快灬高潮了| 韩漫漫画无遮挡免费| 琪琪午夜成人理论福利片美容院| 亚洲AV无码乱码在线| FRYEE性欧美18 19| 精产国品一二三区别9977| 娇妻在客厅被朋友玩得呻吟动漫| 欧美丰满熟妇人妻兽交视频| 亚洲AV无码一区二区三区波多野| JAPANESE嫩21VIDE| 精品国产自在现线看久久| 日日躁夜夜躁狠狠躁超碰97| 伊人久久大香线蕉AV网| 99国产精品国产精品九九| 国产无遮挡又黄又爽不要VIP软| 欧美黑人XXXX性高清版| 亚洲欧美日韩一区二区三区在线| 俄罗斯1317大但人文艺术| 蜜臀av蜜臀一区二区三区| 亚洲AV成人无码一二三在线观看| ワンピースのエロ.WWW在线| 久久天堂综合亚洲伊人HD妓女| 无码任你躁久久久久久老妇| 锕锕锕锕锕锕锕轻点好痛免费| 久久久久亚洲AV成人无码| 午夜香吻电视剧免费观看| 波多野结衣中文字幕一区二区三区 | 2020精品国产自在现线看| 精产国品一二三产区区别在线观看| 少妇私密会所按摩到高潮呻吟| 80岁老熟妇乱子伦牲交| 久久精品国产亚洲AV高清热| 午夜亚洲国产理论片亚洲2020| 成人精品视频99在线观看免费| 免费无码又爽又刺激激情视频| 亚洲精品国产成人99久久| 国产精品JK白丝AV网站| 人人澡人摸人人添学生AV| 中文字幕人妻无码一区二区三区| 精品久久伊人99热超碰| 五十路熟妇无码AV在线| 妇女强高潮18ⅩXXX| 人妻AV一区二区三区| 18禁无遮拦无码国产在线播放| 久久精品国产亚洲AV蜜臀色欲 | 少妇风流AAAAA毛片| AV无码不卡在线观看免费| 麻豆国产成人AV在线播放欲色| 亚洲男人的天堂在线播放| 国产又粗又猛又黄又爽无遮挡| 天天摸天天碰天天添| 动漫高H纯肉无码视频在线观看| 人鲁交YAZHONGHUCXX| 337P日本欧洲亚洲大胆69影| 老年镖客视频大全播放| 亚洲一区二区三区日本久久九| 黑人巨根后入娇小女孩| 亚洲AⅤ天堂无码专区-百度| 国产精品成人观看视频国产奇米| 少妇性饥渴无码A区免费| 刺激战场未满十八岁能玩多久| 人人妻人人爽人人澡人人| HEZYO东京热无码专区| 欧美不卡一区二区三区| 67194熟妇在线直接进入百度| 绿帽娇妻在卧室疯狂的呻吟| 樱桃空空人妻无码内射| 久久综合九色综合欧美98| 一本一道AV无码中文字幕﹣百度| 久久精品国产亚洲A∨麻豆| 亚洲精品无码激情AV| 九妹免费观看完整版| 亚洲熟妇无码AV不卡在线播放| 精品日产1区2卡三卡麻豆| 亚洲麻豆AV成本人无码网站| 精品国偷自产在线视频99| 亚洲男人第一无码AV网| 久久精品国产久精国产思思| 亚洲最大成人网站| 里面也请好好疼爱五集| 40岁的寡妇下面紧不紧| 欧美性猛交XXXXXⅩXX| YW尤物AV无码| 日韩精品无码久久久久久| 国产99久久久国产精品成人小说| 特级毛片内射WWW无码| 国产精品国产三级国产专不| 无翼乌全彩工口里番库| 韩国理伦电影午夜三级| 亚洲欧美偷拍另类A∨色屁股| 久久精品亚洲综合专区| 中国人妻被两个老外三P| 女人三A级毛片视频| YY111111111少妇影院| 日韩人妻无码精品久久| 一本色道久久88精品综合| 久久亚洲精品无码VA大香大香| 中文字幕乱码亚洲无线码| 欧美大波少妇在厨房被| 别揉我奶头~嗯~啊~动漫网站| 色鬼7777久久| 国产免费一区二区三区免费视频| 亚洲国产精品成人精品无码区在线 | 亚洲色无码专区一区| 秘书在办公室被躁到高潮 | 日本SM/羞辱/调教/捆绑视频| 国产AV剧情片二区| 亚洲ⅤA中文字幕无码| 精品国产精品国产偷麻豆| 与子敌伦刺激对白播放| 人妻aⅴ无码一区二区色戒| 国产AV无码专区亚洲AVJUL| 亚洲 欧美 国产 动漫 综合| 久久久久亚洲AV无码专区导航| 99久久无色码中文字幕| 少妇被三个黑人调教| 黑人狂桶女人高潮嗷嗷叫小说| 在厨房我撕开岳的丁字裤| 日本精品一区二区三区试看| 国产精品一区二区水蜜桃色欲| 亚洲无人区码一二三码区别图片| 欧美交换配乱吟粗大免费看| 国产VA免费精品高清在线观看| 亚洲精品国产精品乱码视色 | 无码网站天天爽免费看视频| 久久精品国产久精国产思思| MACBOOKPRO免费观看| 无码人妻少妇色欲AV一区二区| 久久久精品午夜免费不卡| 爸的比老公大两倍儿媳妇叫什么呢| 无码国产精品一区二区免费式影视| 久久AⅤ无码精品色午麻豆| MM1313亚洲精品无码久久| 无码专区一ⅤA亚洲V天堂| 久久综合久久鬼色| 粉嫩AV一区二区三区| 亚洲色大成网站WWW永久| 人与畜禽CORPORATION| 黑人又大又粗又硬XXXXX免费| 8x8x熟妇一区二区三区| 无码人妻精品一区二区三区蜜桃91 | 国产在线看片无码不卡| BTА√天堂中文在线官网| 亚洲AV色无码乱码在线观看| 国内精品久久人妻无码不卡|