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学习阶段性总结(2)--(X)HTML学习
Feb 03 Javascript
Jquery练习之表单验证实现代码
Dec 14 Javascript
js Map List 遍历使用示例
Jul 10 Javascript
js实现简洁的TAB滑动门效果代码
Sep 06 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
Mar 05 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
Mar 05 Javascript
Vue.js render方法使用详解
Apr 05 Javascript
利用JS实现scroll自定义滚动效果详解
Oct 17 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
Jan 03 Javascript
微信小程序实现的一键拨号功能示例
Apr 24 Javascript
你了解vue3.0响应式数据怎么实现吗
Jun 07 Javascript
实现一个Vue自定义指令懒加载的方法示例
Jun 04 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
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
php利用header函数下载各种文件
2016/08/24 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
自己的js工具 Cookie 封装
2009/08/21 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
python 怎样进行内存管理
2020/11/10 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
荷兰手表网站:Watch2Day
2018/07/02 全球购物
产品工艺师的岗位职责
2013/11/15 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
Python Django模型详解
2021/10/05 Python
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python