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

如何获取并存储JavaScript Promise resolve后返回的结果值

问题1解答

Promise的状态变更和回调执行遵循JS事件循环的调度规则:

  • 即使Promise.resolve("Passed")是已完成状态的Promise,调用.then()后返回的新Promisex的状态更新逻辑,会被推入微任务队列等待执行
  • 你写的console.log(x)属于主线程同步任务,会优先于所有微任务执行,此时x的状态更新逻辑还没触发,所以打印结果是Promise { <pending> }
  • setTimeout属于宏任务,触发时机晚于所有同步任务、微任务执行完毕,此时x的状态已经更新为完成,所以能打印出携带返回值的Promise对象。

问题2解答

Promise的返回值无法在同步上下文中直接取出,只能在异步回调中获取,有两种常用写法:

方法1:链式调用.then()处理

直接在.then()的回调函数内部操作返回值:

let p = Promise.resolve("Passed")
p.then(msg => {
  // 此处的msg就是你要取的"Passed",所有需要用到该值的逻辑都可以在这里写
  console.log(msg)
}).catch(err => console.log(err))

方法2:用async/await语法糖简化写法

在async标记的函数内部使用await等待Promise完成,直接拿到返回值:

let p = Promise.resolve("Passed")
async function handleResult() {
  const msg = await p
  // 此处的msg就是"Passed"
  console.log(msg)
}
handleResult()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:24:02