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 相关文章推荐
jQuery中:hidden选择器用法实例
Dec 30 Javascript
jQuery创建DOM元素实例解析
Jan 19 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
JQuery中基础过滤选择器用法实例分析
May 18 Javascript
jQuery如何使用自动触发事件trigger
Nov 29 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
jQuery ajax应用总结
Jun 02 Javascript
JS中的数组方法笔记整理
Jul 26 Javascript
vue 中自定义指令改变data中的值
Jun 02 Javascript
jquery ajaxfileupload异步上传插件
Nov 21 jQuery
详解vue中点击空白处隐藏div的实现(用指令实现)
Apr 19 Javascript
基于jQuery拖拽事件的封装
Nov 29 jQuery
基于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嵌套输出缓冲代码实例
2015/05/12 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
Python编程中对文件和存储器的读写示例
2016/01/25 Python
Python构建网页爬虫原理分析
2017/12/19 Python
python生成ppt的方法
2018/06/07 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
关于运动会的广播稿(10篇)
2014/09/12 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
师范生见习总结范文
2015/06/23 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
MySQL Server 层四个日志
2022/03/31 MySQL
讲解Python实例练习逆序输出字符串
2022/05/06 Python