Promise难点

Promise解释原名叫做’承诺’,表达的意思是将来会执行的操作,代表异步操作;
特点:
它总共分为两个阶段和三个状态;
首先两个阶段是 unsettled未决阶段和 settled已决阶段;
然后三个状态 penging 等待和resolved 已处理以及reject 已拒绝
基本用法:
创建一个简单的Promise
代码演示:

 <script type="text/javascript">
	  	 const pro = new Promise((resolve , reject) => {
	  	 	if(true){
                 resolve(data)
	  	 	}else{
                 reject(err)
	  	 	}
	  	 })
	  </script>

由上面的代码可知这个构造函数接收两个函数作为参数,分别是resolve和reject,
当异步操作执行成功后,会将异步操作结果作为参数传入resolve函数并执行,此时 Promise对象状态从pending变为resolve;
失败则会将异步操作的错误作为参数传入reject函数并执行,此时 Promise对象状态从pending变为rejected;

相关API:
all()
这个方法会返回一个新的promise对象,如果里面所有的promise对象都成功才会触发,一旦有一个失败,则该promise对象为失败
写法:
const arr = Promise.arr()

race()
当参数中的任意一个promise对象完成时候,就马上回去使用完成的这个promise对象的结果,不管这个结果成功还是失败
写法
const arr = Promise.race()

Promise原型:
Promise 的实例具有 then 方法,主要作用是为 Promise 实例发生状态改变时添加回调函数,
Promise的catch主要返回一个Promise,并且处理拒绝的情况。
Promise的finally()指上一次promise 运行结束后,无论resolved还是 rejected,都会执行指定的回调函数。
代码演示一个基本的一个Promise

 <script type="text/javascript">
	  	 const arr = [];
	  	 for(let i = 0 ; i < 5; i++){
	  	 	arr.push(new Promise(resolve , reject) => {
	  	 		//设置一个一次性定时器
	  	 		setTimeout(() => {
	  	 			//判断结果
	  	 			if(Math.random() < 0.1){
	  	 				console.log('成功')
	  	 				resolve(i)
	  	 			}else{
	  	 				console.log('失败')
	  	 				reject(i)
	  	 			}
	  	 		},1000)
	  	 	})
	  	 }
	  	 const pro = Promise.race(arr);
	  	 pro.then(data => {
	  	 	console.log('完成' + data)
	  	 })
	  	 pro.catch(err => {
	  	 	console.log('未完成' + err)
	  	 })
	  </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值