是否可直接访问并打印返回的Promise对象中的<value>字段值?
问题解答
不能直接访问Promise对象对应的取值。
你在控制台看到的<state>、<value>属于JS运行环境提供的内部私有调试属性,不属于ECMAScript标准定义的Promise公开API,不同运行环境的属性命名、表现都可能存在差异,直接在业务代码里通过这类属性取值会直接报错,生产环境绝对不能这么写。
正确的Promise取值有两种常用方式:
- 用
.then()链式调用获取成功状态的返回值,搭配.catch()捕获异常:
// yourPromise 就是你打印的那个Promise实例 yourPromise.then(value => { // 此处可正常拿到返回值,对应你打印的<value>内容 console.log(value.code, value.data) }).catch(err => { // 处理Promise rejected状态的报错逻辑 })
- 如果是在
async标记的函数内部,可以用await语法简化取值逻辑:
async function fetchData() { try { const value = await yourPromise console.log(value.code, value.data) } catch (err) { // 处理异常 } }
内容的提问来源于stack exchange,提问作者eshalit
相关产品推荐
相关产品推荐

