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

JavaScript中async函数调用为何返回Promise而非response.data?

问题原因

所有被async关键字声明的函数,返回值默认会被JavaScript自动包装为Promise对象,这是语法层面的固定规则,和你内部有没有写await、有没有返回异步请求结果无关。
你直接执行console.log(trigger())时,trigger内部的axios请求还处于未完成的状态,自然拿不到最终的response.data,只会打印出处于pending状态的Promise实例。

解决方案

要拿到异步返回的结果,只能通过以下两种方式调用:

  1. 使用.then链式调用获取结果
trigger().then(resData => {
  // 只有这个回调里才能拿到接口返回的response.data
  console.log(resData)
})
  1. 在其他async函数中通过await调用获取结果
    如果是顶层作用域,可以直接用立即执行的异步函数包裹:
(async () => {
  const resData = await trigger()
  console.log(resData)
})()

额外注意

你当前的trigger函数没有兜底逻辑,如果遍历完所有data的条目都没有匹配value.name == source的项,函数没有主动返回值,最终Promise的兑现值会是undefined,建议补充匹配失败的兜底处理,避免后续逻辑报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:12:01