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 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
理清apply(),call()的区别和关系
Aug 14 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
Oct 23 Javascript
jquery配合css简单实现返回顶部效果
Sep 30 Javascript
JS/Jquery判断对象为空的方法
Jun 11 Javascript
详解AngularJS实现表单验证
Dec 10 Javascript
微信小程序 动画的简单实例
Oct 12 Javascript
Angular自定义组件实现数据双向数据绑定的实例
Dec 11 Javascript
vue中轮训器的使用
Jan 27 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
May 07 Javascript
js仿360开机效果
Dec 26 Javascript
用JS创建一个录屏功能
Nov 11 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实现过滤表单提交中html标签的方法
2014/10/17 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
[原创]图片分页查看
2006/08/28 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
python 使用get_argument获取url query参数
2017/04/28 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
python实现小世界网络生成
2019/11/21 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
django自定义模板标签过程解析
2019/12/14 Python
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
电大自我鉴定范文
2013/10/01 职场文书
高校毕业生登记表自我鉴定
2013/11/03 职场文书
婚庆司仪主持词
2014/03/15 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书