promise处理多个相互依赖的异步请求(实例讲解)


Posted in Javascript onAugust 03, 2017

在项目中,经常会遇到多个相互依赖的异步请求。如有a,b,c三个ajax请求,b需要依赖a返回的数据,c又需要a和b请求返回的数据。如果采用请求嵌套请求的方式自然是不可取的。导致代码难以维护,如何请求很多。会出现很多问题。

Promise就是解决多个异步请求的问题。 Promise是ES6提供的一个对象,用来传递异步操作的消息。

Promise有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和 Rejected(已失败)。

直接上代码。有a,b请求,b依赖a的请求数据。如下:

function a(){
      return new Promise(function(res,rej){
        $.ajax({
          url:"a",
          type: "GET",
          async:true,
          dataType:"json",
          success:function(data){
            console.log(data,"a");
            res(data);
          }
        })
      });
    }
    function b(data){
      console.log(data,"data");
      return new Promise(function(res,rej){
        $.ajax({
            url:"b",
            type: "POST",
            async:true,
            data:JSON.stringify(data),
            dataType:"json",
            success:function(data){
              console.log(data,"b");
              res();
            }
          })
      });
    }
    $("#btn").click(function(){
      a().then(function (data){
        b(data);
      }).then(function(){
      })
    })

接口url在网上找了一个,可以看运行结果:

promise处理多个相互依赖的异步请求(实例讲解)

以上这篇promise处理多个相互依赖的异步请求(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 一个自定义长度的文本自动换行的函数
Aug 19 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
Nov 19 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
Aug 24 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
Apr 07 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
Feb 23 Javascript
详谈jQuery中的一些正则匹配表达式
Mar 08 Javascript
基于jquery实现多选下拉列表
Aug 02 jQuery
JavaScript继承与多继承实例分析
May 26 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
layui radio点击事件实现input显示和隐藏的例子
Sep 02 Javascript
老生常谈js数据类型
Aug 03 #Javascript
详解JavaScript按概率随机生成事件
Aug 02 #Javascript
angular中的cookie读写方法
Aug 02 #Javascript
webpack进阶——缓存与独立打包的用法
Aug 02 #Javascript
使用vue构建移动应用实战代码
Aug 02 #Javascript
React Native之ListView实现九宫格效果的示例
Aug 02 #Javascript
jQuery初级教程之网站品牌列表效果
Aug 02 #jQuery
You might like
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
php函数连续调用实例分析
2015/07/30 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
一些实用的jQuery代码片段收集
2011/07/12 Javascript
js格式化时间小结
2014/11/03 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
vue router demo详解
2017/10/13 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
python时间整形转标准格式的示例分享
2014/02/14 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
python3.7添加dlib模块的方法
2020/07/01 Python
Python类的继承super相关原理解析
2020/10/22 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
给学校的建议书
2014/03/12 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
村庄环境整治方案
2014/05/15 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
酒会邀请函
2015/01/31 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
运动会800米赞词
2015/07/22 职场文书