如何使用Promise对象的then方法

高手们有没有人讲详细点的我想讲解下,如何使用Promise对象的then方法
最新回答
小阳光温暖我╮

2026-10-23 06:09:28

Promise的then方法用于处理异步操作的成功和失败状态,通过回调函数获取结果或错误信息。

  • 基本语法promise.then(onFulfilled, onRejected)

    onFulfilled:Promise成功时调用,参数为resolve传递的值。

    onRejected(可选):Promise失败时调用,参数为reject传递的错误信息。

  • 示例代码解析

    function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { const data = 'Hello World!'; resolve(data); // 成功时传递数据 // reject('Error occurred'); // 失败时传递错误 }, 1000); });}fetchData() .then( (data) => console.log('成功:', data), // 处理成功 (error) => console.error('失败:', error) // 处理失败 ) .catch((error) => console.error('捕获的错误:', error)); // 统一错误处理

    fetchData返回一个Promise,模拟1秒后返回数据或错误。

    then的第一个参数处理成功结果,第二个参数(可省略)处理失败。

    catch用于捕获链中任何未处理的错误(推荐统一错误处理方式)。

  • 链式调用与新Promisethen每次返回新的Promise,支持链式操作:

    fetchData() .then((data) => data.toUpperCase()) // 返回新Promise,处理数据 .then((processedData) => console.log('处理后:', processedData)) .catch((error) => console.error('链中错误:', error));

    每个then可对结果进一步处理,错误会向下传递直到被catch捕获。

  • 关键注意事项

    错误处理:建议使用catch统一处理,而非then的第二个参数,避免遗漏错误。

    返回值:若回调函数未显式返回,新Promise的状态为fulfilled,值为undefined。

    异步性:then的回调始终异步执行,即使Promise已敲定。

  • 与async/await对比then是Promise的基础方法,而async/await是其语法糖,更适用于顺序异步流程:

    async function getData() { try { const data = await fetchData(); console.log('成功:', data); } catch (error) { console.error('失败:', error); }}

总结:then是Promise的核心方法,通过回调函数分离成功/失败逻辑,支持链式调用,是异步编程的重要工具。合理使用能提升代码可读性和可维护性。