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
});