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 相关文章推荐
JS获取IUSR_机器名和IWAM_机器名帐号的密码
Dec 06 Javascript
jquery select(列表)的操作(取值/赋值)
Mar 16 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Nov 14 Javascript
自己编写的支持Ajax验证的JS表单验证插件
May 15 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
Jun 06 Javascript
js实现分割上传大文件
Mar 09 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
jquery代码规范让代码越来越好看
Feb 03 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
Feb 22 Javascript
如何理解Vue的.sync修饰符的使用
Aug 17 Javascript
angular ng-model 无法获取值的处理方法
Oct 02 Javascript
微信小程序页面缩放式侧滑效果的实现代码
Nov 15 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 Http_Template_IT类库进行模板替换
2009/03/19 PHP
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
php array的学习笔记
2012/05/16 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
PHP7变量处理机制修改
2021/03/09 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Django 路由系统URLconf的使用
2018/10/11 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
python同步两个文件夹下的内容
2019/08/29 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
平面设计求职信
2014/03/10 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
受资助学生感谢信
2015/01/21 职场文书
公司董事任命书
2015/09/21 职场文书