MST

星途 面试题库

面试题:JavaScript 异步编程之 Promise 错误处理

在使用 Promise 进行异步操作时,假设有一系列的异步任务通过 then 链连接,当其中某个任务 reject 时,如何优雅地捕获并处理整个 then 链中的错误?请用代码示例说明。
23.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
// 创建一系列通过then链连接的异步任务
Promise.resolve()
  .then(() => {
      // 模拟第一个异步任务
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          // 这里模拟成功情况
          resolve('第一个任务完成');
        }, 1000);
      });
    })
  .then(result => {
      console.log(result);
      // 模拟第二个异步任务,这里故意抛出错误
      throw new Error('第二个任务出错');
    })
  .then(result => {
      console.log(result);
    })
  .catch(error => {
      // 捕获整个then链中的错误
      console.error('捕获到错误:', error.message);
    });
  1. 在上述代码中,通过Promise.resolve()开始一个Promise链。
  2. 第一个then处理函数返回一个新的Promise模拟第一个异步任务并成功resolve。
  3. 第二个then处理函数故意抛出一个错误模拟任务失败。
  4. 最后通过.catch捕获整个then链中的错误,并在控制台打印错误信息。这样就优雅地处理了then链中可能出现的错误。