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 淡出一个图像到另一个图像的实现代码
Jun 12 Javascript
JS中数组Array的用法示例介绍
Feb 20 Javascript
js自动查找select下拉的菜单并选择(示例代码)
Feb 26 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
Aug 06 Javascript
15个常用的jquery代码片段
Dec 19 Javascript
CSS或者JS实现鼠标悬停显示另一元素
Jan 22 Javascript
BootStrap 超链接变按钮的实现方法
Sep 25 Javascript
详解在Angular项目中添加插件ng-bootstrap
Jul 04 Javascript
html中通过JS获取JSON数据并加载的方法
Nov 30 Javascript
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
React props和state属性的具体使用方法
Apr 12 Javascript
js指定日期增加指定月份的实现方法
Dec 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
php 静态属性和静态方法区别详解
2017/04/09 PHP
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
使用Python实现一个简单的项目监控
2015/03/31 Python
python 全局变量的import机制介绍
2017/09/07 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
大学新生欢迎词
2014/01/10 职场文书
优秀教师事迹简介
2014/02/02 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
小学生环保倡议书
2014/05/15 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
公司考勤管理制度
2015/08/04 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python