promise语法及回调

13 篇文章 0 订阅
4 篇文章 0 订阅

promise是异步编程的解决方案,比传统的回调函数更合理更强大
一般new一个promise容器,promise容器里有三个状态,但是每次只能存在一个状态,一旦成功不会改变,缺点:无法取消,中途回调函数报错不会反映到外部,即下面图片的三个小圈,pending正在执行,resolve是成功的,reject是失败的
在这里插入图片描述

成功后就把data传到resolve这个状态中
在这里插入图片描述

then里的第一个function就是resolve,第二个function就是reject
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
代码图示:
在这里插入图片描述
then(function(){return aaa},function(){return bbb}).then(aaa的结果,bbb的结果)
在这里插入图片描述
在这里插入图片描述

promise.then(onresolve,onreject)//在onresolve发生异常,在onreject捕获不到这个异常
promise.then(onresolve).catch //catch能捕获到异常   catch后还能在catch到错误,catch后还能继续then
//setTimeout产生的错误不会被catch捕获到,因为在js中catch先在setTimeout回调之前执行
//在all(数组)成功则返回一个结果数组,失败则返回第一个reject失败状态的值

async ,await 的执行顺序

从字面意思上看await就是等待,await 等待的是一个表达式,这个表达式的返回值可以是一个promise对象也可以是其他值。

很多人以为await会一直等待之后的表达式执行完之后才会继续执行后面的代码,实际上await是一个让出线程的标志。await后面的表达式会先执行一遍,将await后面的代码加入到微任务队列中,然后就会跳出整个async函数来执行后面的代码。
由于因为async await 本身就是promise+generator的语法糖。所以await后面的代码是微任务

async function async1() {
	console.log('start');
	await async2();
	console.log('end');
}

等价于

async function async1() {
	console.log('start');
	Promise.resolve(async2()).then(() => {
                console.log('end');
        })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值