promise

1. promise.then中的返回值作为下一次回调的参数

2. catch之后可继续执行链式操作

3. 错误传递,遇到异常抛出,浏览器会顺着Promise链寻找 onRejected失败回调函数或者由.catch()指定的回调函数

let promise = new Promise(resolve => {
    console.log('初始化');
    resolve();
}).then(() => {
    throw new Error('抛出错误');
    console.log('异常后执行'); // 不会执行
}).then(() => {
    console.log('异常后的回调'); // 不会执行
}).catch(() => {
    console.log('异常信息')
}).then(() => {
     return 2; // 继续执行
}).then(res => {
    console.log(res); // 上一次回调的返回值作为本次回调的参数 
});
console.log(promise)

输出结果

async/await

可以让我们用一种更简洁的方式写出基于Promise的异步行为,不需要刻意的链式调用promise

返回一个Promise(如果返回值不是promise,那么它将会隐士地包装在一个promise中),成功状态 resolve(async函数返回值),失败状态async函数抛出异常

await会暂停整个async函数的执行进程,只有当等待的基于Promise的异步操作成功或失败之后才会恢复进程,promise的成功值会被当作await表达式的返回值

async function foo() {
   const result = await new Promise((resolve) => setTimeout(() => resolve('1')))
   // result = 1
}
foo()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值