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仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
Apr 24 Javascript
再探JavaScript作用域
Sep 24 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
JS防止网页被嵌入iframe框架的方法分析
Sep 13 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 Javascript
Vue用v-for给src属性赋值的方法
Mar 03 Javascript
js实现各浏览器全屏代码实例
Jul 03 Javascript
详解vue-cli下ESlint 配置说明
Sep 03 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 Javascript
解决Antd Table表头加Icon和气泡提示的坑
Nov 17 Javascript
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
基于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学习笔记之数组篇
2011/06/28 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
js控制div及网页相关属性的代码
2009/12/19 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
python opencv判断图像是否为空的实例
2019/01/26 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
会话Bean的种类
2013/11/07 面试题
使用索引有什么好处
2016/07/27 面试题
公司中层干部的自我评价分享
2014/03/01 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
2014国庆节标语口号
2014/09/19 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
详解JAVA中的OPTIONAL
2021/06/14 Java/Android