JS多個異步請求 按順序執(zhí)行next實(shí)現(xiàn)解析
在js里面,偶爾會遇見需要多個異步按照順序執(zhí)行請求,又不想多層嵌套,,這里和promise.all的區(qū)別在于,promise或者Jquery里面的$.when 是同時發(fā)送多個請求,一起返回,發(fā)出去的順序是一起;這里是按照順序發(fā)請求
首先創(chuàng)建一個迭代器,接收任意多個函數(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)建多個異步的函數(shù),注入到迭代器中
/*
comm:多個函數(shù),公用的變量
next:調(diào)用下一個函數(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ù)中,做異步操作,知道在異步成功的時候調(diào)用next()就可以繼續(xù)執(zhí)行下一個函數(shù),同時可以將前面函數(shù)返回的結(jié)果,綁定在comm上,帶到下一個函數(shù)中
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript使用Promise實(shí)現(xiàn)并發(fā)請求數(shù)限制
本文主要介紹了JavaScript使用Promise實(shí)現(xiàn)并發(fā)請求數(shù)限制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
PNGHandler-借助JS讓PNG圖在IE下實(shí)現(xiàn)透明(包括背景圖)
PNGHandler-借助JS讓PNG圖在IE下實(shí)現(xiàn)透明(包括背景圖)...2007-08-08
如何在webpack項(xiàng)目中調(diào)試loader插件
最近在學(xué)習(xí)webpack,本文主要介紹了loader插件的調(diào)試方法,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
用canvas 實(shí)現(xiàn)個圖片三角化(LOW POLY)效果
這篇文章主要介紹了用canvas 實(shí)現(xiàn)個圖片三角化(LOW POLY)效果 的相關(guān)資料,需要的朋友可以參考下2016-02-02

