MST
星途 面试题库

面试题:JavaScript中Promise的链式调用与错误处理

假设有三个异步任务,任务二依赖任务一的结果,任务三依赖任务二的结果。每个任务都可能失败。请使用Promise链式调用实现这三个任务,并妥善处理过程中可能出现的错误,要求在捕获错误时能准确指出是哪个任务出错。
39.2万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
function task1() {
    return new Promise((resolve, reject) => {
        // 模拟异步操作,这里使用setTimeout
        setTimeout(() => {
            // 随机决定任务是否成功
            if (Math.random() > 0.5) {
                resolve('任务一的结果');
            } else {
                reject(new Error('任务一出错'));
            }
        }, 1000);
    });
}

function task2(result1) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (Math.random() > 0.5) {
                resolve(`任务二基于 ${result1} 的结果`);
            } else {
                reject(new Error('任务二出错'));
            }
        }, 1000);
    });
}

function task3(result2) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (Math.random() > 0.5) {
                resolve(`任务三基于 ${result2} 的结果`);
            } else {
                reject(new Error('任务三出错'));
            }
        }, 1000);
    });
}

task1()
  .then(result1 => task2(result1))
  .then(result2 => task3(result2))
  .then(finalResult => {
        console.log(finalResult);
    })
  .catch(error => {
        console.error(error.message);
    });