Promise实战AJAX封装
一、利用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封装的更多相关文章
- 简单的基于promise的ajax封装
		
基于promise的ajax封装 //调用方式: /* ajaxPrmomise({ url:, method:, headers:{} }).then(res=>{}) */ ;(functi ...
 - 实战ajax
		
原文:实战ajax 实战ajax Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面. 大家都知道aja ...
 - Javascript:来一个AJAX封装函数
		
前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...
 - 妹味6:ajax与ajax封装
		
(功能)ajax能且仅能 从服务器读取文件 (环境)需要服务器环境才能测试,可以用工具建立本地服务器环境 (缓存)解决缓存问题:url加时间戳让每次请求地址唯一,如 url='abc.txt?t='+ ...
 - ajax请求原理及jquery $.ajax封装全解析
		
.ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...
 - Ajax封装函数笔记
		
Ajax封装函数: function ajax(method, url, data, success) { //打开浏览器 //1.创建一个ajax对象 var xhr = null; try { x ...
 - Promise实现ajax
		
利用Promise实现ajax GET function getAjax(url) { return new Promise((resolved,rejected)=>{ //创建ajax对象 ...
 - 原生ajax封装,包含post、method方式
		
原生ajax封装,包含post.method方式 function ajax(method, url, data, success) { var xhr = null; try { xhr = new ...
 - Ajax工作原理和原生JS的ajax封装
		
前言: 之所以用ajax作为博客的开篇,是因为无论从ajax的出现还是从它的作用上来说,ajax对于前端无疑是意义重大的.甚至可以说,是ajax带来了前端这个行业.当然,历史并不能说明当下,曾经的辉煌 ...
 
随机推荐
- chinalife的经验
			
1.当<img src="">时,浏览器会有生成border,可以使用css选择器,img[src=""] {/*设置样式*/}: 2.jquery ...
 - 解决laravel使用QQ邮箱发邮件失败
			
在 laravel 中使用 QQ 发送邮件的时候莫名其妙的出现了如下错误:Connection could not be established with host smtp.exmail.qq.co ...
 - js前台计算两个日期的间隔时间
			
js前台计算两个日期的间隔时间(时间差)原创 2017年08月28日 16:09:43 标签:javascript 1144在后台传来两个时间字段,从中解析出两个字符串类型的日期格式 需要在前台解析出 ...
 - OOP的概念和基础特性
			
OOP是面对对象程序设计,是一种程序设计范型,同时也是一种程序开发方法.它将对象作为程序的基本单元,将程序和数据封装其中,以提高程序的复用性.灵活性.可扩展行. OOP的核心思想是对象.封装.可复用性 ...
 - [translation]The rise of college ‘Grade Forgiveness’
			
Education 教育 The rise of college 'Grade Forgiveness' /*the rise of -的增加*/大学等级宽恕现象的增加. Universities a ...
 - 含有Date属性的对象转化为Json
			
含有Date类型属性的对象,转化为Json,Date属性并不是时间戳格式. 解决方法: 使用Jackson的注解@JsonFormat,添加到对象属性上方即可. 我们的北京时间会相差8个小时,因为我们 ...
 - c++学习路线连接
			
https://blog.csdn.net/qq_36482772/article/category/7396881/4?
 - Ubuntu16.04 藍牙連上,但是聲音裏面找不到設備
			
解決辦法: 1. sudo apt-get install blueman bluez* 2. sudo vim /etc/pulse/default.pa 注釋掉下面的代碼: #.ifexists ...
 - echarts水球
			
教程网址:https://echarts.baidu.com/blog/2017/02/21/echarts-liquidfill-chart-tutorial.html DEMO网址(引入js在di ...
 - k8s 网络模型
			
一.前言 k8s对Pods之间如何进行组网通信提出了要求,k8s对集群的网络有以下要求: 所有的Pods之间可以在不使用NAT网络地址转换的情况下相互通信 所有的Nodes之间可以在不使用NAT网络地 ...