中断Promise链的方法
1. 抛出错误
要中断Promise链的执行,我们可以在任意的.then()
方法中抛出一个错误。抛出错误后,Promise链会立即停止执行,并将控制权传递到链的.catch()
方法或全局的错误处理器(如果有)。
以下是一个示例,演示了如何中断Promise链的执行:
代码语言:javascript复制function performTask1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('Task 1 completed');
resolve('Result 1');
}, 1000);
});
}
function performTask2(result) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('Task 2 completed');
reject(new Error('Task 2 failed'));
}, 2000);
});
}
function performTask3(result) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('Task 3 completed');
resolve('Result 3');
}, 1500);
});
}
performTask1()
.then(result1 => {
console.log('Result 1:', result1);
return performTask2(result1);
})
.then(result2 => {
console.log('Result 2:', result2);
return performTask3(result2);
})
.then(result3 => {
console.log('Result 3:', result3);
})
.catch(error => {
console.error('Error occurred:', error);
});
在上述示例中,我们定义了三个任务函数performTask1()
、performTask2()
和performTask3()
,它们返回Promise对象,并模拟了异步操作。在performTask2()
函数中,我们故意抛出了一个错误,模拟任务2的失败情况。
当任务2抛出错误时,Promise链会立即停止执行,并将错误传递到链的.catch()
方法中进行处理。在控制台输出中,我们可以看到只有任务1和任务2被执行,任务3被中断。