一、利用Promise的知识,对最开始的ajax的例子进行一个简单的封装:

var url = 'xxx';
// 封装一个get请求的方法
function request(url){return new Promise(function(resolve,reject){var XHR = new XMLHttpRequest();XHR.open('GET',url,true);XHR.send();XHR.onreadystatechange = function(){if(XHR.readyState==4 && XHR.status == 200){try{var response = JSON.parse(XHR.responseText);resolve(response)} catch(e){reject(e);}}else{reject(new Error(XHR.statusText))}}})}request(url).then(function(res){console.log(res);
})

二、当有一个ajax请求,它的参数需要另外2个甚至更多请求都有返回结果之后才能确定,这个时候,就需要用到Promise.all

Promise.all接收一个Promise对象组成的数组作为参数,当这个数组所有的Promise对象状态都变成resolved或者rejected的时候,它才会去调用then方法。

url1 = "xxx1"
url2 = "xxx2"function renderAll(){return Promise.all([request(url1),request(url2)])
}renderAll().then(function(value){console.log(value);
})

三、Promise.race

Promise.race是以一个Promise对象组成的数组作为参数,不同的是,只要当数组中的其中一个Promsie状态变成resolved或者rejected时,就可以调用.then方法了

function renderRace() {return Promise.race([getJSON(url), getJSON(url1)]);
}renderRace().then(function(value) {console.log(value);
})

欢迎加入大前端交流群!群号:277942610,新建立VIP新群

更多专业前端知识,请上 【猿2048】www.mk2048.com

Promise实战AJAX封装相关推荐

  1. Promise基本使用 ,promise 与 Ajax封装

    Promise是JS中进行异步编程的新的解决方案 表达: ①从语法上看:Promise是一个构造函数 (自己身上有all.reject.resolve这几个方法,原型上有then.catch等方法) ...

  2. 使用ES6中Promise对象来封装ajax操作 以及then方法的返回值

    1 Promise的含义 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise 是一个对象,从它可以获取异步操作的消息.Pr ...

  3. promise将ajax变为同步,ES6-Promise改造异步请求为同步

    1.扩展:ajax 1.1 代码如下 $.ajax({ url:'地址', type:'get/post', data:{}, dataType:'json/jsonp', success:funct ...

  4. Vue之Axios AJAX封装

    来源:我的博客站 OceanicKang |<Vue 之 Axios AJAX封装> 前言 才不要写前言,Axios 中文文档 https://www.kancloud.cn/yunye/ ...

  5. jQuery的ajax封装函数

    阐述: 在开发的时候,我们会频繁调ajax,但是jQuery又不能使用promise,不遵循ES6的标准.所以很烦. 只能靠自己封装一下ajax来解决下ajax频繁写的过程.也便于日后维护. 封装aj ...

  6. java原生封装_[Java教程]原生AJAX封装

    [Java教程]原生AJAX封装 0 2016-07-12 13:00:08 回归下原生js,网上看到的AJAX封装,遂拿来改改,不知还有何弊端,望指出!1 var ajaxHelper = { 2 ...

  7. Ajax工作原理和原生JS的ajax封装

    前言: 之所以用ajax作为博客的开篇,是因为无论从ajax的出现还是从它的作用上来说,ajax对于前端无疑是意义重大的.甚至可以说,是ajax带来了前端这个行业.当然,历史并不能说明当下,曾经的辉煌 ...

  8. JS弹窗确认Ajax封装方法

    2019独角兽企业重金招聘Python工程师标准>>> 代码示例: var modification = {method: function () {//开始发送数据 $.post ...

  9. Ajax封装2.0版

    在之前了解并学习了Ajax的基础知识后,有些朋友可能觉得零碎的Ajax学起来有些繁琐,用起来也不太方便.那么我们为什么不能用函数将它封装起来,在我们需要它的时候便直接使用呢?那今天就让我们学习下Aja ...

最新文章

  1. ES权威指南[官方文档学习笔记]-57 Analysis and analyzers
  2. 自己珍藏一些有趣的Python子程序
  3. pthread_cleanup_push
  4. 不能错过的RTS经典:《蘑菇战争2》是如何做玩法创新的?
  5. 【ARM】ARM汇编程序设计(三) 循环结构
  6. 486. Predict the Winner | 486. 预测赢家(博弈论)
  7. cdh界面 hue 配置hbase_海量数据存储技术之HBase:使用HBase Shell操纵HBase
  8. [第二届构建之法论坛] 预培训文档(C++版)
  9. 渗透攻击exp共享站点
  10. 自己动手写Docker系列 -- 4.3实现volume数据卷
  11. 【概率论】深度学习必懂的13种概率分布
  12. 20155327-20155329信息安全技术实验一实验报告
  13. Java 面试学习指南
  14. xmapp下mysql的密码更改
  15. 内存管理技术——离散分配方式
  16. 第五次作业—— 四则运算“软件”开发
  17. linux磁盘写保护怎么修改_linux
  18. 冰冻三尺,非一日之寒。数据解析——bs4
  19. 出现连接路由器的电脑不能上网,而手机可以上网的问题的一种解决方法
  20. 入木三分学网络第一篇--VRRP协议详解-----(1)

热门文章

  1. python编程语言优缺点_原创001 第一次接触这个神奇而又无所不能的编程语言:Python...
  2. c语言ok未定义标识符,C语言中宏的相关知识 - osc_y7ckpzr9的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. linux 远程挂载摄像头_如何实现嵌入式Linux下USB摄像头视频采集
  4. python内建时间模块 time和datetime
  5. mui的学习图片预览
  6. Java 中Thread的sleep、join、yield方法解析
  7. 使用LinkedList模拟一个堆栈或者队列数据结构
  8. HTML5移动端触摸事件
  9. conflicting types for ‘方法名’ 的错误
  10. asp.net ViewState详解