MST
星途 面试题库

面试题:JavaScript中Promise对象的基本用法

请简述Promise对象是什么,并编写一个简单的Promise示例,该示例模拟异步操作(例如使用setTimeout),在成功时返回一个字符串,失败时抛出一个错误。同时说明如何处理这个Promise的成功和失败情况。
12.5万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

Promise对象简述

Promise 是 JavaScript 中用于处理异步操作的对象。它代表一个异步操作的最终完成(或失败)及其结果值。Promise 有三种状态:

  • Pending(进行中):初始状态,既不是成功,也不是失败状态。
  • Fulfilled(已成功):意味着操作成功完成,此时会有一个 resolved 值。
  • Rejected(已失败):意味着操作失败,此时会有一个 rejection 原因。

一旦 Promise 的状态从 Pending 转换为 Fulfilled 或 Rejected,就永远保持该状态,这就是所谓的“已敲定(settled)”。

简单Promise示例

function asyncOperation() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            const success = true; // 模拟异步操作结果
            if (success) {
                resolve('异步操作成功,这是返回的字符串');
            } else {
                reject(new Error('异步操作失败'));
            }
        }, 1000);
    });
}

处理Promise的成功和失败情况

处理 Promise 通常使用 .then().catch() 方法:

asyncOperation()
   .then((result) => {
        console.log(result); // 处理成功情况,打印返回的字符串
    })
   .catch((error) => {
        console.error(error.message); // 处理失败情况,打印错误信息
    });

还可以使用 async/await 语法来处理 Promise,它能让异步代码看起来更像同步代码:

async function main() {
    try {
        const result = await asyncOperation();
        console.log(result); // 处理成功情况,打印返回的字符串
    } catch (error) {
        console.error(error.message); // 处理失败情况,打印错误信息
    }
}

main();