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的划词搜索实现(备忘)
Sep 14 Javascript
javascript调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
判断访客终端类型集锦
Jun 05 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
Aug 21 Javascript
Bootstrap每天必学之按钮(一)
Nov 24 Javascript
必备的JS调试技巧汇总
Jul 20 Javascript
jQuery延迟执行的实现方法
Dec 21 Javascript
vue-ajax小封装实例
Sep 18 Javascript
js+html5生成自动排列对话框实例
Oct 09 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
Aug 21 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
Jul 19 Javascript
前端vue+elementUI如何实现记住密码功能
Sep 20 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中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
javascript 写类方式之六
2009/07/05 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
微信小程序实现滑动操作代码
2020/04/23 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
Python3中多线程编程的队列运作示例
2015/04/16 Python
python中的tcp示例详解
2018/12/09 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
手写一个python迭代器过程详解
2019/08/27 Python
哪些是python中web开发框架
2020/06/17 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
应届护士推荐信
2013/11/16 职场文书
自我鉴定写作要点
2014/01/17 职场文书
销售主管岗位职责
2014/02/08 职场文书
大学生作弊检讨书
2014/02/19 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
投标承诺书范本
2014/03/27 职场文书
出生证明公证书
2014/04/09 职场文书
日语系毕业求职信
2014/07/27 职场文书
2014年工程工作总结
2014/11/25 职场文书
如何书写邀请函?
2019/06/24 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫