欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS多個異步請求 按順序執(zhí)行next實現(xiàn)解析

 更新時間:2019年09月16日 09:57:51   作者:muamaker  
這篇文章主要介紹了js多個異步請求 按順序執(zhí)行next實現(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ù)返回的結果,綁定在comm上,帶到下一個函數(shù)中

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論