Promise使用

Promise的使用
Es6中的Promise使得异步变得比同步变成简单,大大减少了代码量。

  1. 新建一个Promise对象
var p=new Promise()
  1. 添加异步操作
    在这里使用了jQuery,应该在文件中引入jQuery文件
var p=new Promise(function(resolve,reject)
{
	$.ajax({
		url:'arr.txt', 
		dataType:'json',
		success(data){  
			resolve(data);}, 
		error(err){    
			reject(err);}     
		})   
	})

这里应该在Promise中传入一个函数,函数有两个参数,一个是resolve,就是在读取文件正确时,将读取到的数据传给这一个函数,另一个是reject,就是当读取文件错误的时候,将错误对象传给这一个函数。
3. then()

p.then(function(data){      
	console.log(data);},
	function(){      
	console.log('错误');    
	})

这里是读取完成后(可能读取成功,也可能读取失败),执行的then操作。then的参数中有两个函数,就是第一个参数就是上述的resolve函数,第二个就是reject函数。
4.整体代码:

<!DOCTYPE html>
<html lang="cn">
<head>  
<meta charset="UTF-8">  
<meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Document</title>  
<script src="./jquery.min.js"></script>
</head>
<body>  
	<script>    
	var p=new Promise(function(resolve,reject){      
		$.ajax({        
		url:'arr.txt',        
		dataType:'json', 
		success(data){   
	      		 resolve(data);},
		error(err){          
			reject(err) }
		})    })    
		p.then(function(data){      
		console.log(data);    
		},function(){      
		console.log('错误');    
		})  
</script>
</body>
</html>

Promise.all()

  1. 基本使用
    如果读取多个文件时,可以使用Promise.all()
    Promise.all()里面传入一个参数------一个数组,就是数组里面存放着需要读取的对象
    2.代码为:
<!DOCTYPE html>
<html lang="cn"><head>  
<meta charset="UTF-8">  
<meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Document</title>  
<script src="./jquery.min.js"></script>
</head>
<body>  
<script>    
	var p1=new Promise(function(resolve,reject){      
	$.ajax({        
	url:'arr.txt',        
	dataType:'json',        
	success(data){          
	resolve(data);        
	},        
	error(err){         
	reject(err)        
	}      
	})    
	});    
	var p2=new Promise(function(resolve,reject){      
	$.ajax({        
	url:'arr_2.txt',        
	dataType:'json',        
	success(data){          
	resolve(data);        
	},        
	error(err){          
	reject(err)        
	}      
	})    
	})   
	Promise.all([p1,p2]).then(data=>{    
	let [arr_1,arr_2]=data;    
	console.log(arr_1);    
	console.log(arr_2);   
	},error=>{    
	console.log('读取错误');   
	})  
	</script>
</body>
</html>

在jQuery中的promise

  1. 在jQuery中$.ajax({url:'arr.txt',dataType:'json'})就是一个Promise对象
  2. 所以在Promise.all()中的数组中就可以直接将其传入,使代码更简洁
  3. 代码为:
<!DOCTYPE html>
<html lang="cn">
<head>  
<meta charset="UTF-8">  
<meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Document</title> 
 <script src="./jquery.min.js"></script>
 </head>
 <body>  
 <script>  
   Promise.all([     
    $.ajax({url:'arr.txt',dataType:'json'}),      $.ajax({url:'arr_2.txt',dataType:'json'}),    ]).then(data=>{      let [arr_1,arr_2]=data;      
  console.log(arr_1);      
  console.log(arr_2);    
  },error=>{      
   console.log('错误');    })  
   </script>
   </body>
</html>

注意该例子需要在开启服务器才可以读取其中的问价,因为ajax如果不能直接从本地读取文件数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值