对Promise的理解使用

什么情况下会用到promise

一般情况下有异步操作时,使用Promise对这个异步操作进行封装


new Promise((resolve,reject) => {
			
<!--第一次请求网络代码-->
    setTimeout(() => {
        <!--成功调用-->
        resolve('hello')
        <!--失败调用-->
        reject('err')
    },1000)
}).then(data => {
<!--第一次拿到结果的处理代码-->
    console.log(111 + data)
    <!--手动抛出异常-->
    <!--throw 'error message'-->
    return new Promise((resolve,reject) => {
    <!--第二次请求网络代码-->
        setTimeout(() => {
        <!--成功调用-->
            resolve('hello')
        <!--失败调用-->
            reject('err')
        },1000)
    })
}).then(data => {
<!--第二次拿到结果的处理代码-->
    console.log(222 + data)
    
    return new Promise((resolve,reject) => {
    <!--第三次请求网络代码-->
        setTimeout(() => {
            resolve('hello')
			reject('err')
        },1000)
    })
}).then(data => {
<!--第三次拿到结果的处理代码-->
    console.log(333 + data)
},err => {  
<!--错误处理-->
	console.log(err)
})

链式调用简写


new Promise((resolve,reject) => {
		setTimeout(() => {
			resolve('hello world')
		},1000)
	}).then(data => {
		console.log(data)
		return data + '111'
	}).then(data => {
		console.log(data)
		return data + '222'
	}).then(data => {
		console.log(data)
		return Promise.reject(data + 'error')
	}).then(data => {
		console.log(data)
		return data + '444'
	}).then(data => {
		console.log(data)
	})
			

Promise All 用法

函数需满足多个异步请求才会执行,此时就可以用到All方法


Promise.all([
				new Promise((resolve,reject) => {
					setTimeout(() => {
						resolve('result1')
					},2000)
				}),
				new Promise((resolve,reject) => {
					setTimeout(() => {
						resolve('result2')
					},1000)
				}),
			]).then(results => {
				console.log(results)
			})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值