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 相关文章推荐
1秒50万字!js实现关键词匹配
Aug 01 Javascript
将json转换成struts参数的方法
Nov 08 Javascript
JQuery.validationEngine表单验证插件(推荐)
Dec 10 Javascript
基于JavaScript实现瀑布流效果
Mar 29 Javascript
JavaScript面向对象精要(下部)
Sep 12 Javascript
详解创建自定义的Angular Schematics
Jun 06 Javascript
Javascript读写cookie的实例源码
Mar 16 Javascript
微信小程序页面间传值与页面取值操作实例分析
Apr 30 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 Javascript
Vue+Spring Boot简单用户登录(附Demo)
Nov 12 Javascript
vue实现购物车的小练习
Dec 21 Vue.js
老生常谈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
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
javascript json字符串到json对象转义问题
2019/01/22 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
Python的re模块正则表达式操作
2016/05/25 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
python可视化text()函数使用详解
2020/02/11 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
html5-Canvas可以在web中绘制各种图形
2012/12/26 HTML / CSS
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
食品厂厂长岗位职责
2014/01/30 职场文书
相亲活动方案
2014/08/26 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
MySql数据库触发器使用教程
2022/06/01 MySQL