javascript - 如何解决无限 Javascript promise ?

标签 javascript promise apollo react-apollo

我正在使用 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/

相关文章:

node.js - 为什么 Promiseify 会导致循环花费更长的时间?

javascript - Promise.all 不等待所有 Promise 完成 firestore 数据读取

javascript - 如何使用依赖注入(inject)进行测试?

javascript - javascript 将数组转换为对象

javascript - 在点击事件meteorjs上插入模板实例

promise - 为什么我不允许破坏 Promise?

go - 使用 Apollo Client 和 graphql-go 的 Graphql 查询错误为 'Unknown type Int'

node.js - 为什么子字段在不同界面时会发生冲突?

android - Apollo GraphQL - 是否可以执行请求不同字段的相同查询?

javascript - 更改 Google 标记的 icon_image