所以考虑下面的代码,当我解析一个promise时,结果在第一个时刻处于pending状态(我知道在我扩展了分号之后,我会看到预期的结果,但在这里我质疑的是第一个时刻),而我拒绝了一个promise,它在第一个时刻显示了预期的结果.我想知道为什么会发生这种事

代码:

 const test = new Promise((resolve, reject) => {
 resolve(Promise.resolve(78))
 })

 console.log(test);

 //output in console:Promise {<pending>}
 const test2 = new Promise((resolve, reject) => {
 reject(Promise.resolve(78))
 })
 
 console.log(test2);

 //output:promise {<rejected>: Promise}

推荐答案

MDN:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise#return_value

请注意,如果你调用resolveFunc或rejectFunc并传递另一个Promise对象作为参数,它可以说是"resolved",但仍然不是"solved".看Promise description更多的解释.

返回的promise被结算为fixc,所以我们应该创建一个微任务async来瞄准返回的promise被结算的时间点:

const test = new Promise((resolve, reject) => {
  resolve(Promise.resolve(78))
})

queueMicrotask(() => queueMicrotask(() => console.log(test)));

enter image description here

Javascript相关问答推荐

React对话框模式在用户单击预期按钮之前出现

是什么原因导致此Angular 16电影应用程序中因类型错误而不存在属性?

TypScript界面中的Infer React子props

字节数组通过echo框架传输到JS blob

基于变量切换隐藏文本

如何修复(或忽略)HTML模板中的TypeScript错误?'

如何粗体匹配的字母时输入搜索框使用javascript?

当点击注册页面上的注册按钮时,邮箱重复

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

在open shadow—root中匹配时,使用jQuery删除一个封闭的div类

在HTML语言中调用外部JavaScript文件中的函数

使用getBorbingClientRect()更改绝对元素位置

如何使用TypeScrip设置唯一属性?

创建以键值对为有效负载的Redux Reducer时,基于键的类型检测

使用NextJS+MongoDB+Prisma ORM获取无效请求正文,无法发布错误

用于测试其方法和构造函数的导出/导入类

我为什么要使用回调而不是等待?

React数组查找不读取变量

如何在css中裁剪成一定Angular 的圆的一部分,而不需要复杂的多边形

react :图表负片区域不同 colored颜色