关于promise和async await

Promise

//Promise为原生构造函数
let promiseObj = new Promise((resolve,reject)=>{
	//操作
	/*
		成功:rosolve(成功的参数)
		失败:reject(失败的参数)
	*/
})
.then(resolve的参数)
.catch(reject的参数)
/*
	promiseObj
		可以进行存储状态,当执行后就会根据执行的结果改变该状态
		状态status:pending 进行中 fulfilled 成功 rejected 失败
		结果result:unfefined 成功的参数 或者 失败的参数

		.then()返回一个新的promise对象,可以继续使用.then()方法
		.catch()捕获错误,传递参数返回的错误信息,不传递参数则在控制台报错,当promise实例运行错误,之后的then不会被执行,因为没有新的promise对象被返回
*/

Promise主要解决的问题

主要解决了回调地狱的问题,将回调函数改为then方法的链式调用

什么是回调地狱?

在回调函数中继续使用回调,一个异步操作的入参往往是上一个异步的结果;这样会依赖上一个异步操作的结果去执行下一个异步操作
典型的就是setTimeout嵌套

/*
    promise.then/catch() 都会返回一个promise对象:result
    如果then/catch 方法直接返回一个值,这个值就是下一个then方法的成功回调的实参
    如果then/catch方法返回一个promise对象,下面的then就是promise对象的处理结果
*/

Promise.resolve('直接调用成功').then(res => console.log(res))
相当于 new Promise(function(revlse){revolse('直接调用成功')})
Promise.reject(‘直接调用失败’).catch(err => log(err))

promise 可以存储状态 _固定result 不会改变
then/catch 方法返回的promise是新的

async await

async函数中 可以使用await获取Promise.resolve的结果
也就是await 将promise.then() 方法接收的值返回出来,此过程会调用.then()方法,这个实参就是resolve的参数,也就是promise执行了resolve传入的实参结果
失败的话拿不出来结果,所以一般await写在try catch里面;await拦截,在返回数据之前,会阻塞之后代码的执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值