JS多个异步请求 按顺序执行next实现解析


Posted in Javascript onSeptember 16, 2019

在js里面,偶尔会遇见需要多个异步按照顺序执行请求,又不想多层嵌套,,这里和promise.all的区别在于,promise或者Jquery里面的$.when 是同时发送多个请求,一起返回,发出去的顺序是一起;这里是按照顺序发请求

首先创建一个迭代器,接收任意多个函数参数

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);
      } 
    } 

创建多个异步的函数,注入到迭代器中

/*
     comm:多个函数,公用的变量
     next:调用下一个函数
     * */
    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');
    }
//开始执行迭代
nextRegister(fn1,fn2,fn3);

在这里,fn1-fn3函数中,做异步操作,知道在异步成功的时候调用next()就可以继续执行下一个函数,同时可以将前面函数返回的结果,绑定在comm上,带到下一个函数中

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ExtJS Window 最小化的一种方法
Nov 18 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
Jan 04 Javascript
关于锚点跳转及jQuery下相关操作与插件
Oct 01 Javascript
js获取input标签的输入值实现代码
Aug 05 Javascript
使用js画图之正弦曲线
Jan 12 Javascript
Angularjs修改密码的实例代码
May 26 Javascript
JS中正则表达式要注意lastIndex属性
Aug 08 Javascript
vue.extend与vue.component的区别和联系
Sep 19 Javascript
怎样在vue项目下添加ESLint的方法
May 16 Javascript
vue cli4下环境变量和模式示例详解
Apr 09 Javascript
详解Node.js使用token进行认证的简单示例
May 25 Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 Javascript
基于layui框架响应式布局的一些使用详解
Sep 16 #Javascript
Layui点击图片弹框预览的实现方法
Sep 16 #Javascript
layuiAdmin循环遍历展示商品图片列表的方法
Sep 16 #Javascript
layui异步加载table表中某一列数据的例子
Sep 16 #Javascript
layui.use模块外部使用其内部定义的js封装函数方法
Sep 16 #Javascript
浅谈JS中几种轻松处理'this'指向方式
Sep 16 #Javascript
使用xampp将angular项目运行在web服务器的教程
Sep 16 #Javascript
You might like
PHP开发中常用的8个小技巧
2008/08/27 PHP
php实现短信发送代码
2015/07/05 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
Python代码实现KNN算法
2017/12/20 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
python3实现名片管理系统
2020/11/29 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
Python中格式化字符串的四种实现
2020/05/26 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
土地转让协议书范本
2014/04/15 职场文书
实习评语大全
2014/04/26 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
主要负责人任命书
2014/06/06 职场文书
历史学专业求职信
2014/06/19 职场文书
会员卡清退活动总结
2014/08/27 职场文书
Nginx报404错误的详细解决方法
2022/07/23 Servers