0
点赞
收藏
分享

微信扫一扫

JS基础17

芒果六斤半 2022-04-13 阅读 62

promise

作用:处理异步任务结果,更优雅,更好的一种方式

let promise=new Promise(function(resovle,reject){
	resovle(data)
	reject(err)
})
promise.then(function(data){
	处理成功结果
})
promise.catch(function(err){
	处理失败结果
})

三种状态不可逆

promise状态是私有的,外部不能检测到,他有三种状态pending(待定),fulfilled(兑现),rejected(拒绝),这三种状态是不可以逆的,无论是从待定到成功还是拒绝,他的状态就是成功或拒绝的
在这里插入图片描述

 <script>
   const promise=new Promise((resovle,reject)=>{
       setTimeout(function(){
           if(true){
               resovle('成功')
           }else{
               reject('失败')
           }
       },1000)
   })
   promise.then((data)=>{
       console.log(data);
   })
//1秒钟后输出成功
   promise.catch((err)=>{
       console.log(err);
   })
    </script>

回调地狱问题

ajax({
	url:'请求1地址',
	succes:function(res1){
	ajax({
		url:'请求地址2',
		succes:function(res2){
			ajax({
				url:'请求地址3',
				sucess:function(res3){
					console.log(res3)
				}
				...
			})
			
		}
	})	
	}
})

像这种嵌套称为地狱嵌套,在维护起来非常麻烦
promise使用链式调用解决回调地狱问题

new Promise((resolve,reject)=>{
	ajax({
		url:'地址1',
		succes(res1){
			resolve(res1)
		}
	})
	
}).then((data)={
	return new Promise((resolve,reject)=>{
		ajax({
			url:'地址2',
			succes(res2){
				resolve(res2)
			}
		})
	})
}).then((data)=>{
	return new Promise((resolve,reject)=>{
		ajax({
			url:'地址3',
			succes(res3){
				console.log(res3)
			}
		})
	})
})

Promise常用方法

  1. Promise.resovle()
var p=Promise.resovle('hello')
p.then(function(s){
	console.log(s)
})
//结果hello
//以上代码生成一个新的Promise对象实例,回调函数会立即执行,Promise.resolve方法的
//参数就是回调函数的参数
  1. Promise.reject()
var p=Promise.reject('出错了')
p.then(null,function(s){
	console.log(s)
})
//结果出错了
//以上代码生成一个新的Promise对象实例,回调函数会立即执行,Promise.resolve方法的
//参数就是回调函数的参数
  1. Promise.race()
Promise.race([promise1,promise2]).then((data)=>{
	console.log(data)
})
//竞争执行,谁先返回谁执行
  1. Promise.all()
Promise.all([promise1,promise2]).then((datas)=>{
	console.log(datas)
})
//返回后一起执行
举报

相关推荐

0 条评论