我是React-Redux的新手。我正在对json文件进行api调用,并希望以数组形式返回此文件的内容。我对Promises的处理不是很多,所以我对访问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数组!
最佳答案
经过激烈的讨论,建议您重写getProducts
方法使其更像Promise。不要将回调与promise混合使用,将代码放入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]