gpt4 book ai didi

javascript - 如何解决无限 Javascript promise ?

转载 作者:行者123 更新时间:2023-12-03 03:48:33 25 4
gpt4 key购买 nike

我正在使用 Apollo GraphQL 库,并且在某一时刻它返回了一个 promise 。当我在控制台中检查它时,我可以看到这是一个已解决的 promise :

Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: Object}
__proto__
:
Promise
[[PromiseStatus]]
:
"resolved"
[[PromiseValue]]
:
Object

但是,当我 Promise.resolve(thatPromise) 时,我得到了......相同的 promise 。无论我解决 promise 多少次,它都会不断返回 promise ,从而无法访问 promise 的值。

我知道值就在那里(如果我检查[[PromiseValue]],它是一个带有值的普通对象)...我只是不知道如何在代码级别而不是在浏览器控制台中。

有没有人遇到过这样的事情,如果是的话,你能弄清楚如何提取这样一个无限解决的 promise 的值(value)吗?

附注我确实尝试过:

thatPromise['[[PromiseValue]]'];

但它似乎是一个特殊的浏览器值,您无法从代码访问。

P.P.S。刚刚意识到这可能是也可能不是一个 promise 。我通过调用response.clone().json()来获得它,所以虽然它看起来像一个 promise ,但也许它只是一个 promise 的克隆,在这种情况下,这可能解释为什么我无法解析它。但是,它没有解释我如何提取该值。

编辑

我认为这里发生了奇怪的事情,我不会报告所有相关细节。一旦我更好地解决问题,我就会发布更多信息(不想让任何人白费力气)。

最佳答案

您没有理由必须调用 Promise.resolve 来获取该值。请记住 Promise 是异步的。您必须像这样访问它的值:

myPromise.then(value => {
console.log(value)
// do whatever you're going to do with value
};

您可以在[此处][1]阅读有关 Promise 工作原理的更多信息。

关于javascript - 如何解决无限 Javascript promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45267646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com