2023-3-21学习笔记

文章介绍了JavaScript中的throw语句用于抛出异常,中断程序执行并转移至catch块处理错误。同时阐述了Promise在异步编程中的作用,包括其三种状态(pending、fulfilled、rejected)以及如何通过.then()和.catch()处理回调。还提到了Promise.race()方法,它在数组中任何Promise状态改变时返回第一个改变的Promise的结果或错误。
摘要由CSDN通过智能技术生成

throw的作用

throw 语句在 JavaScript 中用于抛出异常。当抛出异常时,程序执行停止,并将控制转移到 catch 块。如果没有 catch 块,则程序执行停止。

以下是在 JavaScript 中使用 throw 语句的示例:

function divide(a,b){
    if(b===0){
        throw "不允许除以零";
        }
    return a/b;
}
try{
let result=divide(10,0);
    console.log(result);
}
catch(error){
    console.log(error);
}

在此示例中,如果 b 的值为 0,则执行 throw 语句并显示消息“不允许除以零”。然后将控制转移到 catch 块,其中将错误消息记录到控制台。

Promise的状态改变

Promises有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。当Promise的状态从pending变为fulfilled时,会调用.then()方法指定的回调函数;当Promise的状态从pending变为rejected时,会调用.catch()方法指定的回调函数;在Promise的状态改变时,会调用.then()或.catch()方法指定的回调函数,而不是在状态改变后再去添加回调函数。

Promise的基本工作流程

Promises是一种异步编程的解决方案,它可以避免回调地狱,使代码更加清晰和易于维护。Promises有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。当Promise的状态从pending变为fulfilled时,会调用.then()方法指定的回调函数;当Promise的状态从pending变为rejected时,会调用.catch()方法指定的回调函数;在Promise的状态改变时,会调用.then()或.catch()方法指定的回调函数,而不是在状态改变后再去添加回调函数。Promises可以通过.then()方法指定在当前Promise状态变为resolved(已完成)时的回调函数,也可以通过.catch()方法指定在Promise状态变为rejected(已失败)时的回调函数。在Promise状态变为resolved时,.then()方法指定的回调函数会被调用,并将Promise的结果作为参数传递给该函数;在Promise状态变为rejected时,.catch()方法指定的回调函数会被调用,并将Promise的错误原因作为参数传递给该函数。如果Promise状态已经变为resolved或rejected,再次调用.then()或.catch()方法时,会立即调用相应的回调函数,而不是等待Promise状态的改变。

Promise.race

Promise.race()方法接收一个Promise对象数组作为参数,返回一个新的Promise对象。当数组中的任意一个Promise对象状态发生改变时,新的Promise对象的状态就会发生改变。如果数组中的所有Promise对象都处于pending状态,新的Promise对象也会处于pending状态;如果数组中的所有Promise对象都处于resolved状态,新的Promise对象的状态就会变为resolved,并将第一个Promise对象的结果作为参数传递给新的Promise对象的回调函数;如果数组中的任意一个Promise对象处于rejected状态,新的Promise对象的状态就会变为rejected,并将第一个Promise对象的错误原因作为参数传递给新的Promise对象的回调函数。以下是一个使用Promise.race()方法的示例:

const promise1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 500, 'one');
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'two');
});

Promise.race([promise1, promise2]).then((value) => {
  console.log(value); // "two"
  // Both resolve, but promise2 is faster
});

Promise如何串联多个操作任务

Promise异常穿透和终端Promise链

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值