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 相关文章推荐
图片完美缩放
Sep 07 Javascript
基于Jquery的动态创建DOM元素的代码
Dec 28 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
Dec 11 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
Nov 30 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
Nov 28 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
Feb 16 Javascript
js实现延迟加载的几种方法
Apr 24 Javascript
React Native 搭建开发环境的方法步骤
Oct 30 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
vue.js input框之间赋值方法
Aug 24 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
Sep 01 jQuery
js实现固定区域内的不重叠随机圆
Oct 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
用PHP+MySql编写聊天室
2006/10/09 PHP
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
轻松理解Python 中的 descriptor
2017/09/15 Python
Python连接phoenix的方法示例
2017/09/29 Python
儿童编程python入门
2018/05/08 Python
python实现简易动态时钟
2018/11/19 Python
python多线程抽象编程模型详解
2019/03/20 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
tensorflow的计算图总结
2020/01/12 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
企业宣传策划方案
2014/05/29 职场文书
排查整治工作方案
2014/06/09 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书