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

添加await后调用then报promiseVariable.then is not a function错误原因

Promise加await后调用then报错原因分析

核心逻辑前提

  • await的作用是等待后方Promise状态变为兑现(fulfilled)后,直接返回该Promise的兑现结果,而非返回Promise对象本身
  • 你定义的handlePromises函数返回的是Promise.all([...]),这是一个Promise对象,它的最终兑现结果是包含4个resolve字符串的普通数组

两次调用的差异

无await的正常调用

let getPromisesArray = handlePromises();

此时getPromisesArray拿到的是handlePromises返回的Promise实例,因此可以正常调用.then()方法绑定回调,运行符合预期。

加await的报错调用

let getPromisesArray = await handlePromises();

此时await已经完成了Promise的解包操作,getPromisesArray拿到的是最终兑现的普通数组,数组不存在.then()方法,因此抛出类型错误。

修正方案

如果使用await语法,就不需要再调用.then(),直接使用解包后的结果即可:

async function handlePromisesUsingAsync() {
  let getPromisesArray = await handlePromises();
  console.log(getPromisesArray);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:36:03