[英]How do I resolve an infinite Javascript promise?
我正在使用Apollo GraphQL库,有一次它返回了一个Promise。 在控制台中检查它时,我可以看到它是一个已解决的承诺:
Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: Object}
__proto__
:
Promise
[[PromiseStatus]]
:
"resolved"
[[PromiseValue]]
:
Object
但是,当我Promise.resolve(thatPromise
)时,我得到了……同样的承诺。 无论我解决承诺多少次,它都会不断返回承诺,从而无法获取承诺的价值。
我知道值在那里(如果我检查[[PromiseValue]]
这是一个带有值的普通对象)...我只是想不出如何在代码级而不是在浏览器控制台中获取它。
有没有人碰到过这样的事情,如果是这样的话,您是否能够弄清楚如何提取这种无限解决的诺言的价值?
PS我确实尝试过:
thatPromise['[[PromiseValue]]'];
但它似乎是您无法从代码中访问的特殊浏览器值。
PPS刚意识到这实际上可能不是一个承诺。 我通过调用response.clone().json()
获得它,因此,虽然看起来像一个承诺,但它可能只是承诺的一个克隆,在这种情况下,这也许可以解释为什么我无法解决它。 但是,它没有解释我如何提取值。
编辑
我认为这里很奇怪,我没有报告所有相关细节。 我会更好地解决问题时将发布更多信息(不想派人追赶鹅)。
您没有理由必须致电Promise.resolve
来获取价值。 请记住,承诺是异步的。 您必须像这样访问它的值:
myPromise.then(value => {
console.log(value)
// do whatever you're going to do with value
};
您可以在此处[1]阅读更多有关Promises工作原理的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.