我是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]

10-02 20:03