为什么当我解决承诺时,输出处于挂起状态?

问题描述 投票:0回答:1

所以考虑下面的代码,当我解析

promise
时,结果在第一时刻就处于
pending
状态(我知道在展开下拉列表后我会看到预期的结果,但在这里我质疑的是第一时刻),当我拒绝一个承诺时,它会在第一时刻显示出预期的结果。所以我想知道为什么会发生这种情况?

代码:

 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}
javascript promise
1个回答
0
投票

Promise
字面上是一个承诺:承诺在完成某些工作后提供一些价值。因此,要获取值,您应该等待它,或者使用
then
/
catch
方法提供回调。

基本上,当你有

test
const 时:

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

您有两个有效的选项来编写确定性代码:

// Use callbacks:
test
    .then(result => console.log("It's for sure successfully completed."))
    .catch(e => console.log("It's for sure failed at this moment."));

// Use await:
try {
    const result = await test;
    console.log("It's for sure successfully completed.")
} catch (e) {
    console.log("It's for sure failed at this moment.")
}

您所观察到的只是某些内部实施的结果,您不应该依赖该观察。这个实际结果可能会在其他 JavaScript 引擎或不同版本中发生变化。

© www.soinside.com 2019 - 2024. All rights reserved.