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中的函数
Jan 22 Javascript
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
May 03 Javascript
Js 去掉字符串中的空格(实现代码)
Nov 19 Javascript
javascript检测浏览器的缩放状态实现代码
Sep 28 Javascript
实现无刷新联动例子汇总
May 20 Javascript
JavaScript让Textarea支持tab按键的方法
Jun 26 Javascript
jquery验证邮箱格式并显示提交按钮
Nov 07 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
Dec 29 Javascript
js中时间格式化的几种方法
Jul 22 Javascript
解决vue移动端适配问题
Dec 12 Javascript
小程序实现锚点滑动效果
Sep 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 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
网页上facebook分享功能具体实现
2014/01/26 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
5种Python单例模式的实现方式
2016/01/14 Python
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
中专生的个人自我评价
2013/12/11 职场文书
财务会计专业求职信范文
2013/12/31 职场文书
《假如》教学反思
2014/04/17 职场文书
节约用电标语
2014/06/17 职场文书
先进员工获奖感言
2014/08/14 职场文书
三峡人家导游词
2015/01/31 职场文书
政协委员个人总结
2015/03/03 职场文书
生日祝酒词大全
2015/08/10 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL