11-17对promise的理解

本文深入解析Promise的resolve/reject与async/await的使用,探讨了初始态、成功态和失败态在异步流程中的作用,以及Promise.all和Promise.race静态方法的应用。通过实例说明如何优雅地处理异步操作和错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

围绕三种状态,错误获取,静态方法,对比async,await

Promise 构造函数只有一个参数,是一个函数,这个函数在构造之后会直接被异步运行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject。
resolve 和 reject 都是函数,其中调用 resolve 代表一切正常,reject 是出现异常时所调用的:

Promise 类有 .then() .catch() 和 .finally() 三个方法,这三个方法的参数都是一个函数,.then() 可以将参数中的函数添加到当前 Promise 的正常执行序列,.catch() 则是设定 Promise 的异常处理序列,.finally() 是在 Promise 执行的最后一定会执行的序列。

resolve 和 reject 的作用域只有起始函数,不包括 then 以及其他序列
then 块默认会向下顺序执行,return 是不能中断的,可以通过 throw 来跳转至 catch 实现中断。


function print(delay, message) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            console.log(message);
            resolve();
        }, delay);
    });
}

print(1000, "First").then(function () {
    return print(4000, "Second");
}).then(function () {
    print(3000, "Third");
});
我们可以将这段代码变得更好看:

async function asyncFunc() {
    await print(1000, "First");
    await print(4000, "Second");
    await print(3000, "Third");
}
asyncFunc();


try{
//正常执行的代码
//如果出错,抛出错误
}catch(err){
//处理错误
}


throw 语句允许我们创建自定义错误   throw 语句允许我们创建自定义错误

初始态pending成功态resolved失败态rejected

promise.all是Promise提供的静态方法 参数是数组,它可以同时监听多个Promise的实例全部成功则成功
Promise.race 是Promise提供的一个静态方法 用于同时监听多个Promise ,跟随最快发生状态变化的实例 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值