Promise如何中断promise链(二)

2023-05-23 10:38:16 浏览数 (2)

2. 使用Promise.reject()

除了在.then()方法中抛出错误外,我们还可以使用Promise.reject()方法返回一个被拒绝的Promise对象,来达到中断Promise链的效果。

以下是使用Promise.reject()的示例:

代码语言: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 Promise.reject(new Error('Task 2 failed'));
  })
  .then(result3 => {
    console.log('Result 3:', result3);
  })
  .catch(error => {
    console.error('Error occurred:', error);
  });

在上述示例中,我们在任务2的.then()方法中使用了Promise.reject()方法返回一个被拒绝的Promise对象,并传递了一个错误。这将导致Promise链立即停止执行,并将错误传递到链的.catch()方法中进行处理。

在控制台输出中,我们可以看到只有任务1和任务2被执行,任务3被中断。

0 人点赞