日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

javascript - 關于 Promise 異步操作的疑惑,以及如果更優雅的編寫

瀏覽:190日期:2023-02-17 08:36:38

問題描述

這幾天看了翻了很多關于 「promise」相關技術貼,看的是眼花繚,一知半解大概了解其作用。

先說說問題吧,項目中用到最多少就是Ajax,有個很不爽的問題「多條ajax依賴請求」假設: R1 > R2( r1_result ) > R3( r2_result ),最省事的做法全部都同步了吧,結果就是體驗很糟糕,頁面一度假死,loading 也不轉了,使用異步操令人惡心的就是一層套一層的回調,以及后續更多的依賴操作。

生命在于折騰,于是就回到了第一段中各種翻閱,看到某位兄臺對 promise 原理刨析,下面引用這位兄臺中的code,http://malcolmyu.github.io/ma...

function Promise(fn) { var state = ’pending’; var value; var deferred = null; function resolve(newValue) { if(newValue && typeof newValue.then === ’function’) { newValue.then(resolve, reject); return; } state = ’resolved’; value = newValue; if(deferred) { handle(deferred); } } function reject(reason) { state = ’rejected’; value = reason; if(deferred) { handle(deferred); } } function handle(handler) { if(state === ’pending’) { deferred = handler; return; } var handlerCallback; if(state === ’resolved’) { handlerCallback = handler.onResolved; } else { handlerCallback = handler.onRejected; } if(!handlerCallback) { if(state === ’resolved’) {handler.resolve(value); } else {handler.reject(value); } return; } var ret = handlerCallback(value); handler.resolve(ret); } this.then = function(onResolved, onRejected) { return new Promise(function(resolve, reject) { handle({onResolved: onResolved,onRejected: onRejected,resolve: resolve,reject: reject }); }); }; fn(resolve, reject);}

看完我不禁又疑惑了, then( function(){ do... } ),這丫還不是個回調嘛,難道是折騰的意義就是套個語法糖(我不信)。

存在即合理,所以最后怎樣合理使用 promise, 如何更優雅操作ajax流程?順便提下有使用 ( axios fetch.js )感覺如何?

問題解答

回答1:

Promise 就是為了解決異步流程控的而生的,其使用核心就是then方法; then初看起來是很像回調,但then的特質是可以處理異常及鏈式寫法. 打個比方,幾個ajax請求依賴如下:

A1 -> A2; Aa -> Ab;Ab + Ac -> Ad;A2 + Ad -> Ax;

如果用Promise,代碼會很清晰 首先準備好 A1,A2,Aa,Ab,Ac,Ad,Ax 都是根據依賴反回promise對像的函數,我就不寫了 然后可以看Promise表演了:

Promise.all([ A1().then(A2), //A1 -> A2 Promise.all([Aa().then(Ab), //Aa -> AbAc() //Ac ]).then(Ad) //Ab + Ac -> Ad;]).then(Ax,Err) //A2 + Ad -> Ax.then(function(v){//完成})

A1,Aa和Ac沒有依賴,會并發執行,之后會根據依賴完成的情況來繼續, 不論哪一個Ajax出問題,都會觸發最后的Err事來統一處理錯誤; 如果你用回調來寫一下試試,要么效率不好,要么回調方法里加一堆代碼來判斷依賴的情況.

參考代碼:

//首先準備好 A1,A2,Aa,Ab,Ac,Ad,Ax 都是基于回調的異步函數var a2,ab,ac,ad; //用來保存完成情況的變量function runAx(){ if(a2 == undefined || ad == undefined) return; //判斷依賴 Ax(a2,ad,function(e,v){//完成 })}function runAd(){ if(ab == undefined || ac == undefined) return; //判斷依賴 Ad(ab,ac,function(e,v){ad = v;runAx(); })}A1(function(e,v){ A2(v,function(e,v){a2 = v;runAx(); })})Aa(function(e,v){ Ab(v,function(e,v){ab = v;runAd(); })})Ac(function(e,v){ ac = v; runAd();})

上面的代碼沒有去處理error,就這么長了,如果依賴再復雜一點,可以想象代碼量,而且容易寫錯;

回答2:

你的理解基本上對,實際上Promise沒簡化多少,只是減少了嵌套的層級。

所以,終極解決方案就是Async/Await,題主可以去查查看資料。

回答3:

優雅就是一個then接一個then,把回調圣誕樹造型擼直,這就是Promises的貢獻。

我寫程序要七八個回調嵌套,Promises爽的一比。

你覺得then寫法都嫌麻煩,那就不要用咯,用Async/Await

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
2023国产精品久久久精品双| 国产一区不卡| 91精品国产乱码久久久久久久| 麻豆视频一区二区| 国产精品一区二区精品| 国产精品色婷婷在线观看| 视频一区视频二区在线观看| 香蕉视频成人在线观看| 男人的天堂久久精品| 亚洲aa在线| 日韩高清在线一区| 国产欧美日韩一级| 精品欧美日韩精品| 青青久久av| 欧美日韩国产一区精品一区| 久久最新视频| 青青国产精品| 精品国产精品久久一区免费式| 国产资源在线观看入口av| 99精品综合| 久久电影一区| 日韩高清不卡在线| 久久亚洲国产精品尤物| 欧美成人基地| 亚洲v天堂v手机在线| 国产经典一区| 99久久精品费精品国产| 一本综合精品| 免费在线观看一区| 日本高清不卡一区二区三区视频| 精品1区2区3区4区| 日韩区一区二| 国产96在线亚洲| 欧美精品一区二区久久| 日本在线成人| 欧美好骚综合网| 欧美日一区二区| 日韩精品国产欧美| 麻豆mv在线观看| 久久成人一区| 欧美精品99| 精品捆绑调教一区二区三区| 香蕉精品999视频一区二区| 国产欧美日韩| 欧美午夜精品一区二区三区电影| 日韩在线观看中文字幕| 精品久久视频| 国产精品嫩草99av在线| 国产麻豆一区二区三区精品视频| 国产一区国产二区国产三区| 91超碰国产精品| 日本伊人午夜精品| 88xx成人免费观看视频库| 免费在线观看不卡| 福利在线一区| 性欧美长视频| 精品99久久| 美女被久久久| 久久久久久夜| 亚洲另类av| 成人影视亚洲图片在线| 亚洲一区二区毛片| 麻豆成人av在线| 欧美日韩日本国产亚洲在线| 国产精品二区影院| 在线看片不卡| 欧美交a欧美精品喷水| 亚洲尤物在线| 精品美女视频| 四虎成人精品一区二区免费网站| 黄毛片在线观看| 日韩精品亚洲专区| 亚洲成人二区| 国产精品99精品一区二区三区∴| 午夜日韩在线| 精品视频高潮| 日韩精品久久久久久| 欧美日韩一区二区综合| 精品国产18久久久久久二百| 日韩中文av| 影院欧美亚洲| 精品国产三区在线| 日韩高清不卡一区| 国产女优一区| 久久免费高清| 国产一区二区三区日韩精品 | 美女免费视频一区| 男人的天堂亚洲一区| 99久久99视频只有精品| 欧美极品中文字幕| 日韩和欧美的一区| 亚洲少妇在线| 成人在线网站| 黄色精品视频| 国产精选一区| 自拍自偷一区二区三区| 欧美另类综合| 亚洲国产一区二区在线观看 | 欧美片第1页| 久久精品资源| 久久国产麻豆精品| 午夜久久av| 亚州精品视频| 亚洲精品乱码久久久久久蜜桃麻豆| 激情综合自拍| 欧美不卡高清一区二区三区| 精品91福利视频| 久久在线91| 国产视频网站一区二区三区| 日韩中文字幕一区二区高清99| 丝袜a∨在线一区二区三区不卡| 亚洲婷婷在线| 色爱av综合网| 国产盗摄——sm在线视频| 国产精品一区二区精品| 日韩精品欧美大片| 日韩国产在线一| 日韩激情啪啪| 日韩激情一区二区| 日韩精品成人| 日韩高清一区在线| 日本欧美一区二区| 欧美日韩中出| 国产亚洲精品精品国产亚洲综合| 日韩高清电影一区| 国产精品一区二区免费福利视频 | 亚洲天堂一区二区| 欧美精选视频一区二区| 日韩精品水蜜桃| 亚洲午夜av| 在线综合欧美| 亚洲综合福利| 青青国产精品| 麻豆极品一区二区三区| 精品国产中文字幕第一页 | 免费一区二区三区在线视频| 精品在线网站观看| 亚洲啊v在线| 激情欧美丁香| 蜜臀av一区二区在线免费观看| 婷婷综合一区| 国产精品亚洲一区二区在线观看| 国产精品久久久久久久久久妞妞| 国产精品大片| 日韩av在线播放网址| 99久精品视频在线观看视频| 免费日韩av| 国产探花在线精品一区二区| 动漫av一区| 国产一区日韩一区| 精品久久99| 欧美精品一二| 日韩视频1区| 精品国产亚洲一区二区三区在线| 精精国产xxxx视频在线野外| 欧美另类综合| 欧美亚洲二区| 久久精品二区亚洲w码| 成人久久一区| 蜜臀精品一区二区三区在线观看| 欧美在线看片| 国产精品伦理久久久久久| 亚洲国产一区二区在线观看| 91成人精品在线| 在线看片国产福利你懂的| 蜜桃国内精品久久久久软件9| 美女黄网久久| 亚洲91在线| 亚洲啊v在线| 日韩中文字幕91| 国产精品巨作av| 美女少妇全过程你懂的久久| 亚洲精品乱码久久久久久蜜桃麻豆| 精品免费av| 亚洲综合欧美| 久久精品国产在热久久| 午夜久久美女| 国产精品.xx视频.xxtv| 欧美精品一区二区久久| 欧美日韩一区二区三区不卡视频| 四虎成人av| 亚洲综合图色| 98精品视频| 中文字幕视频精品一区二区三区| 国产精品久久国产愉拍| 天堂资源在线亚洲| 国产精品一卡| 亚洲视频www| 精品精品99| 午夜亚洲福利| 亚洲福利国产| 欧美精品国产白浆久久久久| 国内亚洲精品| 久久影院资源站| 日韩一区欧美二区| 国产不卡精品| 日韩国产一二三区| 婷婷成人综合| 精品视频91| 日韩区欧美区|