You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

我的async函数调用后控制台同时显示pending与fulfilled状态

为什么调用async函数apiFetch()时控制台同时显示pending和fulfilled状态?

核心原因:async函数的返回特性与控制台的动态更新逻辑

  • async函数调用后会立刻返回一个处于pending状态的Promise——因为函数内部的异步操作(比如await fetch)还未完成,此时控制台会先输出这个pending状态的Promise对象。
  • 当函数内部所有await操作执行完毕、整个函数正常走完流程后,返回的Promise会切换为fulfilled状态。浏览器控制台会自动更新这条输出的状态,所以你会看到它从pending变为fulfilled,部分控制台会保留状态变化的痕迹,看起来像是“同时显示”两种状态。

结合你的代码具体分析

你的apiFetch函数执行流程:

  1. 调用apiFetch()瞬间,函数直接返回pending状态的Promise,控制台先显示这个状态。
  2. 随后await fetch发起网络请求,请求完成后解析响应JSON,接着创建图片元素并添加到页面。
  3. 当所有异步、同步代码执行完毕,Promise状态更新为fulfilled,控制台同步更新显示最终状态。

直观验证方式

在控制台执行以下代码,可以清晰看到状态变化的过程:

const promise = apiFetch();
console.log('刚调用后的Promise状态:', promise); // 此时为pending
setTimeout(() => {
  console.log('一段时间后的Promise状态:', promise); // 此时为fulfilled
}, 2000);

内容的提问来源于stack exchange,提问作者Vishal Kacha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:50:41