我是React-Redux的新手。我正在对一个json文件进行api调用,并希望将此文件的内容作为数组返回。我没有非常处理过Promises,所以我访问它们的知识有点模糊。基本上,这就是我所拥有的:
const fetchData = () => {
return fetch('endpoint.json')
.then(results => results.json())
}
getProducts: (cb, timeout) => setTimeout(() => cb(fetchData().then(response => response)), timeout || TIMEOUT)
getProducts目前返回以下内容,我可以打开以在控制台中查看:
action {type: "RECEIVE_PRODUCTS", products: Promise}
products: Promise
__proto__ :Promise
[[PromiseStatus]] :"resolved"
[[PromiseValue]]: Array(3)
如何访问PromiseValue?我需要直接获取JSON数组!
答案 0 :(得分:2)
在加热讨论之后,有人建议您重写getProducts
方法以使其更像Promise。不要将回调与promises混合,将代码放在then
方法中。连锁承诺尽你所能。
这里描述的这些解决方案中的任何一个都应该足够了
您必须在getProducts
then
fetchData().then((jsonResults)=> {
// put the code surrounding getProducts here
return {
getProducts: jsonResults
}
})
或者,您可以使用await
(请参阅async functions):
let products = await fetchData();
return {
getProducts: products
}
实施例
> console.log(Promise.resolve([1,2,3]))
Promise {<resolved>: Array(3)}
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: Array(3)
> Promise.resolve([1,2,3]).then((jsonResults) => {
console.log(jsonResults);
})
(3) [1, 2, 3]
答案 1 :(得分:-1)