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 相关文章推荐
JavaScript国旗变换效果代码
Aug 13 Javascript
IE iframe的onload方法分析小结
Jan 07 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
Jan 28 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
Jun 19 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
Jul 08 Javascript
HTML5 canvas 9绘制图片实例详解
Sep 06 Javascript
Vue中之nextTick函数源码分析详解
Oct 17 Javascript
vue打包相关细节整理(小结)
Sep 28 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
vue父组件给子组件的组件传值provide inject的方法
Oct 23 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静态新闻列表自动生成代码
2007/06/14 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
PHP插入排序实现代码
2013/04/04 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
JS实现图片翻书效果示例代码
2013/09/09 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
python实现通过shelve修改对象实例
2014/09/26 Python
Python 字典与字符串的互转实例
2017/01/13 Python
Django 限制访问频率的思路详解
2019/12/24 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
文科教师毕业的自我评价
2014/01/16 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
爱心捐助倡议书
2014/05/19 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
投标承诺函范文
2015/01/21 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
医院病假条范文
2015/08/17 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
JavaScript流程控制(分支)
2021/12/06 Javascript
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android
MySQL 字符集 character
2022/05/04 MySQL