JS多個(gè)異步請求 按順序執(zhí)行next實(shí)現(xiàn)解析
在js里面,偶爾會遇見需要多個(gè)異步按照順序執(zhí)行請求,又不想多層嵌套,,這里和promise.all的區(qū)別在于,promise或者Jquery里面的$.when 是同時(shí)發(fā)送多個(gè)請求,一起返回,發(fā)出去的順序是一起;這里是按照順序發(fā)請求
首先創(chuàng)建一個(gè)迭代器,接收任意多個(gè)函數(shù)參數(shù)
function nextRegister(){ var args = arguments; var count = 0; var comm = {}; function nextTime(){ count++; if(count < args.length){ if(args[count] && Object.prototype.toString.call(args[count]) == '[object Function]'){ args[count](comm,nextTime); } } } if(args[count] && Object.prototype.toString.call(args[count]) == '[object Function]'){ args[count](comm,nextTime); } }
創(chuàng)建多個(gè)異步的函數(shù),注入到迭代器中
/* comm:多個(gè)函數(shù),公用的變量 next:調(diào)用下一個(gè)函數(shù) * */ function fn1(comm,next){ console.log('1'); comm.age = 20; next(); } function fn2(comm,next){ next(); console.log('2'); console.log(comm.age); } function fn3(comm,next){ console.log('3'); } //開始執(zhí)行迭代 nextRegister(fn1,fn2,fn3);
在這里,fn1-fn3函數(shù)中,做異步操作,知道在異步成功的時(shí)候調(diào)用next()就可以繼續(xù)執(zhí)行下一個(gè)函數(shù),同時(shí)可以將前面函數(shù)返回的結(jié)果,綁定在comm上,帶到下一個(gè)函數(shù)中
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript navigator.userAgent獲取瀏覽器信息案例講解
這篇文章主要介紹了JavaScript navigator.userAgent獲取瀏覽器信息案例講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08絕對經(jīng)典的滑輪新聞顯示(javascript+css)實(shí)現(xiàn)
這篇文章主要介紹了絕對經(jīng)典的滑輪新聞顯示(javascript+css)實(shí)現(xiàn),需要的朋友可以參考下2007-03-03原生JS+CSS實(shí)現(xiàn)炫酷重力模擬彈跳系統(tǒng)的登錄頁面
今天小編給大家分享基于原生JS實(shí)現(xiàn)一個(gè)炫酷的登錄頁面,實(shí)現(xiàn)效果有點(diǎn)像重力模擬彈跳系統(tǒng),效果非常棒,需要的朋友參考下實(shí)現(xiàn)代碼吧2017-11-11IE6下通過a標(biāo)簽點(diǎn)擊切換圖片的問題
IE6已經(jīng)讓人惡心很久了, Google旗下Youtube決定在3月13日起停止對IE6的支持. 但愿能加速IE6更換的速度.2010-11-11移動(dòng)端觸摸滑動(dòng)插件swiper使用方法詳解
這篇文章主要為大家詳細(xì)介紹了移動(dòng)端觸摸滑動(dòng)插件swiper的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08js 調(diào)用父窗口的具體實(shí)現(xiàn)代碼
想要實(shí)現(xiàn)如題所示:父窗體需要頂一個(gè)show()方法,具體實(shí)現(xiàn)代碼如下,感興趣的朋友可以參考下哈,希望對大家有所幫助2013-07-07