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 相关文章推荐
cssQuery()的下载与使用方法
Jan 12 Javascript
基于jQuery的动态表格插件
Mar 28 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
Apr 02 Javascript
actionscript与javascript的区别
May 25 Javascript
javascript预加载图片、css、js的方法示例介绍
Oct 14 Javascript
jquery队列函数用法实例
Dec 16 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
Apr 18 Javascript
jQuery中页面返回顶部的方法总结
Dec 30 Javascript
Node接收电子邮件的实例代码
Jul 21 Javascript
JS实现中文汉字按拼音排序的方法
Oct 09 Javascript
Vue组件之极简的地址选择器的实现
May 31 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
Dec 03 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
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
php表单敏感字符过滤类
2014/12/08 PHP
php实现购物车功能(下)
2016/01/05 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
Python中的推导式使用详解
2015/06/03 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
Python join()函数原理及使用方法
2020/11/14 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
锐步英国官网:Reebok英国
2019/11/29 全球购物
学生自我鉴定
2013/12/18 职场文书
护理专业自荐书
2014/06/04 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
学校安全管理制度
2015/08/06 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技