promise的三种状态

三种状态(es6)

pending,fufiled,rejected

在promise种状态不可逆,时间不可倒流

promise时间有一个pending等待状态,如果实现fufiled状态,没实现rejected状态

解决了赘述问题

new promise((resolve,reject) => {
    setTimeout(()=>{]
        console.log(1)
        resolve()
    },1000)
}).then((res)=>{
    setTimeout(()=>{
        console.log(2)
    },1000)
})

promise.all()

let p1 = new Promise((resolve,reject)=>{
	setTimeout(()=>{
		console.log('p1')
		resolve()
	},2000)


})

let p2 = new Promise((resolve,reject)=>{
	setTimeout(()=>{
		console.log('p2')
		resolve()
	},1000)


})
let p3 = new Promise((resolve,reject)=>{
	setTimeout(()=>{
		console.log('p3')
		resolve()
	},3000)


})
Promise.all([p1,p2,p3]).then((res)=>{
	console.log('all over')
	console.log(res)
}).catch((err)=> {
	console.log('失败')
	console.log(err)
})

全部成功时候执行all.then,如果我们修改其中一个为reject()那么then不能顺利执行,一个任务执行失败不会影响下面任务继续执行

promise.race()

let p1 = new Promise((resolve,reject)=>{
	setTimeout(()=>{
		console.log('p1')
		resolve()
	},2000)


})

let p2 = new Promise((resolve,reject)=>{
	setTimeout(()=>{
		console.log('p2')
		resolve()
	},1000)


})
let p3 = new Promise((resolve,reject)=>{
	setTimeout(()=>{
		console.log('p3')
		resolve()
	},3000)


})
Promise.race([p1,p2,p3]).then((res)=>{
	console.log('all over')
	console.log(res)
}).catch((err)=> {
	console.log('失败')
	console.log(err)
})

//race比赛竞赛,只要有一个任务完成then立即执行,但是不会影响其他promise执行

用途:请求超时

扫描二维码关注公众号,回复: 10223086 查看本文章
发布了71 篇原创文章 · 获赞 21 · 访问量 3649

猜你喜欢

转载自blog.csdn.net/qq_26386437/article/details/104695246
今日推荐