如何解决无限 Javascript 承诺?
How do I resolve an infinite Javascript promise?
我正在使用 Apollo GraphQL 库,并且在某一时刻它 returns 一个承诺。当我在控制台中检查它时,我可以看到它是一个已解决的承诺:
Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: Object}
__proto__
:
Promise
[[PromiseStatus]]
:
"resolved"
[[PromiseValue]]
:
Object
然而,当我 Promise.resolve(thatPromise
) 我回来时......同样的承诺。无论我 resolve 多少次 promise,它都会返回一个 promise,导致无法访问 promise 的值。
我知道值在那里(如果我检查 [[PromiseValue]]
它是一个带有值的普通对象)......我只是不知道如何在代码级别而不是在浏览器控制台。
有没有人 运行 参与过这样的事情,如果有,你能弄清楚如何提取这种无限解决承诺的价值吗?
P.S。我试过了:
thatPromise['[[PromiseValue]]'];
但它似乎是您无法从代码访问的特殊浏览器值。
P.P.S。刚刚意识到这可能是也可能不是真正的承诺。我通过调用 response.clone().json()
获得它,所以虽然它看起来像一个承诺,但它可能只是一个承诺的克隆,在这种情况下,这可以解释为什么我无法解决它。但是,它没有解释我如何提取值。
编辑
我认为这里发生了一些奇怪的事情,我没有报告所有相关细节。一旦我更好地解决问题,我会 post 更多信息吗(不想让任何人陷入困境)。
您没有理由必须调用 Promise.resolve
来获取值。请记住,Promises 是异步的。您必须像这样访问它的值:
myPromise.then(value => {
console.log(value)
// do whatever you're going to do with value
};
您可以在 [此处][1] 阅读更多有关 Promise 工作原理的信息。
我正在使用 Apollo GraphQL 库,并且在某一时刻它 returns 一个承诺。当我在控制台中检查它时,我可以看到它是一个已解决的承诺:
Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: Object}
__proto__
:
Promise
[[PromiseStatus]]
:
"resolved"
[[PromiseValue]]
:
Object
然而,当我 Promise.resolve(thatPromise
) 我回来时......同样的承诺。无论我 resolve 多少次 promise,它都会返回一个 promise,导致无法访问 promise 的值。
我知道值在那里(如果我检查 [[PromiseValue]]
它是一个带有值的普通对象)......我只是不知道如何在代码级别而不是在浏览器控制台。
有没有人 运行 参与过这样的事情,如果有,你能弄清楚如何提取这种无限解决承诺的价值吗?
P.S。我试过了:
thatPromise['[[PromiseValue]]'];
但它似乎是您无法从代码访问的特殊浏览器值。
P.P.S。刚刚意识到这可能是也可能不是真正的承诺。我通过调用 response.clone().json()
获得它,所以虽然它看起来像一个承诺,但它可能只是一个承诺的克隆,在这种情况下,这可以解释为什么我无法解决它。但是,它没有解释我如何提取值。
编辑
我认为这里发生了一些奇怪的事情,我没有报告所有相关细节。一旦我更好地解决问题,我会 post 更多信息吗(不想让任何人陷入困境)。
您没有理由必须调用 Promise.resolve
来获取值。请记住,Promises 是异步的。您必须像这样访问它的值:
myPromise.then(value => {
console.log(value)
// do whatever you're going to do with value
};
您可以在 [此处][1] 阅读更多有关 Promise 工作原理的信息。