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 相关文章推荐
用于自动添加Digg This!按钮的JavaScript
Dec 23 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
Oct 11 Javascript
在JavaScript中处理字符串之link()方法的使用
Jun 08 Javascript
javascript图片预加载实例分析
Jul 16 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
Jan 22 Javascript
JS字符串的切分用法实例
Feb 22 Javascript
Vue-路由导航菜单栏的高亮设置方法
Mar 17 Javascript
react项目实践之webpack-dev-serve
Sep 14 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
微信小程序云开发如何使用云函数生成二维码
May 18 Javascript
JS Web Flex弹性盒子模型代码实例
Mar 10 Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 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
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
js对象基础实例分析
2015/01/13 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
JS组件Bootstrap Select2使用方法详解
2020/04/17 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python判断windows系统是32位还是64位的方法
2015/05/11 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
python实现控制台输出颜色
2021/03/02 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
消防安全管理制度
2014/02/01 职场文书
新学期决心书
2014/03/11 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
法务专员岗位职责
2015/02/14 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
详解JS WebSocket断开原因和心跳机制
2021/05/07 Javascript