一、利用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新群

Promise实战AJAX封装的更多相关文章

  1. 简单的基于promise的ajax封装

    基于promise的ajax封装 //调用方式: /* ajaxPrmomise({ url:, method:, headers:{} }).then(res=>{}) */ ;(functi ...

  2. 实战ajax

    原文:实战ajax 实战ajax Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面. 大家都知道aja ...

  3. Javascript:来一个AJAX封装函数

    前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...

  4. 妹味6:ajax与ajax封装

    (功能)ajax能且仅能 从服务器读取文件 (环境)需要服务器环境才能测试,可以用工具建立本地服务器环境 (缓存)解决缓存问题:url加时间戳让每次请求地址唯一,如 url='abc.txt?t='+ ...

  5. ajax请求原理及jquery $.ajax封装全解析

    .ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...

  6. Ajax封装函数笔记

    Ajax封装函数: function ajax(method, url, data, success) { //打开浏览器 //1.创建一个ajax对象 var xhr = null; try { x ...

  7. Promise实现ajax

    利用Promise实现ajax GET function getAjax(url) { return new Promise((resolved,rejected)=>{ //创建ajax对象 ...

  8. 原生ajax封装,包含post、method方式

    原生ajax封装,包含post.method方式 function ajax(method, url, data, success) { var xhr = null; try { xhr = new ...

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

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

随机推荐

  1. conda国内源的设置 by dwSun

    conda国内源的设置 by dwSun anaconda是一个balabalabala... 知道这个软件的人肯定不用介绍,不知道的也不必介绍. conda是anaconda的包管理器,通过cond ...

  2. salt Rosters

    salt除了支持Master 和Minion方式之外,还支持SSH; SSH方式因为没有minion主动连接master,所以需要维护 roster,提供master可以操作的对象;roster的配置 ...

  3. spring boot 与servlet

    servlet:      基于java的web组件,用于生成动态内容,由容器管理.      类似其他java技术组件,由平台无关的java类组成,并且由java web服务器加载执行   serv ...

  4. HTTP 学习心得

    一.什么是HTTP? 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的 ...

  5. vuecli3.0安装搭建项目

    1. npm install -g @vue/cli 2. vue create wechat Linter / Formatter 可以不选 检查空格的 //选择less //标准eslint // ...

  6. SSM商城项目(十一)

    1.   学习计划 1.sso注册功能实现 2.sso登录功能实现 3.通过token获得用户信息 Ajax跨域请求(jsonp) 2.   Sso系统工程搭建 需要创建一个sso服务工程,可以参考e ...

  7. HDFS中将普通用户增加到超级用户组supergroup

     

  8. VS2017企业版密钥

    Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QFVisual Studio 2017(VS2017 ...

  9. HTML中<script>的defer属性与async属性

    defer 属性会在 DOMLoaded 事件之前完成异步加载,加载不会阻塞 DOM 解析,并且 script 的顺序会按照 DOM 中的顺序加载. async 属性就是异步加载,没有什么顺序的保证.

  10. 您可能不知道的CSS元素隐藏“失效”以其妙用

    您可能不知道的CSS元素隐藏“失效”以其妙用 by zhangxinxu from http://www.zhangxinxu.com地址:http://www.zhangxinxu.com/word ...