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 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
Jun 24 Javascript
js实现鼠标经过表格行变色的方法
May 12 Javascript
jQuery实现文本展开收缩特效
Jun 03 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
Mar 08 Javascript
jQuery获取父元素及父节点的方法小结
Apr 14 Javascript
jqPlot jQuery绘图插件的使用
Jun 18 Javascript
AngularJS模板加载用法详解
Nov 04 Javascript
jQuery EasyUi 验证功能实例解析
Jan 06 Javascript
基于jquery实现多选下拉列表
Aug 02 jQuery
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
mpvue微信小程序开发之实现一个弹幕评论
Nov 24 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
上海无线电三厂简史修改版
2021/03/01 无线电
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
PHP分页类集锦
2014/11/18 PHP
php抽象类用法实例分析
2015/07/07 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
js indexOf()定义和用法
2012/10/21 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
JavaScript手机振动API
2016/06/11 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
Python中实现常量(Const)功能
2015/01/28 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
python如何爬取个性签名
2018/06/19 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
python编写俄罗斯方块
2020/03/13 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
三年级班级文化建设方案
2014/05/04 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
nginx日志格式分析和修改
2022/04/28 Servers