【问题标题】:Promise pending, promisestatus=resolved?承诺未决,promisestatus=resolved?
【发布时间】:2018-06-11 10:28:30
【问题描述】:

我正在尝试访问 fetch 的结果(这里是“正文”),但一直得到这个:

承诺{} 原型 : 承诺 [[承诺状态]] : “解决” [[承诺价值]] : 数组(100)

它说已解决,但不只是给我想要的数组。

这是我的代码

    let Categories =  fetch('http://localhost:3001/categories?' )
                 .then((response) => {
                  var data = response.json();

                 return data;


               }).then((body) => {
                    console.log("fetching categories...")
                    console.log(body.categories)

                 return body.categories
               })


    console.log(Categories)
    export default Categories

以上结果来自console.log(Categories)

【问题讨论】:

标签: javascript reactjs promise fetch


【解决方案1】:

Categories 仍然是一个 Promise。你必须在你导入它的地方调用.then,你会在参数中收到你的body.categories。

编辑: 来自 cmets 的附加信息(我无法很好地格式化它)。

它是异步的,所以它不能进入​​ Redux 存储的初始状态。你应该:

  • 创建一个获取此数据的操作创建器

  • 当获取数据时,使用该数据调度一个动作,例如: { type: 'CATEGORIES_LOAD', data: data }

  • 制作一个更新这个商店的reducer

并在您的组件挂载时执行此操作创建器,例如如果你也使用 React,则 componentWillMount。

【讨论】:

  • 应该更具体...我正在尝试将其导入到我的 redux 商店中。我该怎么做呢?
  • 为什么要在redux store中导入API调用的结果
  • @DavidSS 它是异步的,所以它不能进入​​初始状态。您应该: - 创建一个获取此数据的操作创建器 - 当获取数据时,使用此数据调度一个操作,例如:`` { type: 'CATEGORIES_LOAD', data: data } ``` - 创建一个更新的 reducer这家商店并在您的组件安装时执行此动作创建者,例如componentWillMount 如果你也使用 React。
  • 我已经编辑了我的答案,因为这里的格式不起作用。如果您不知道如何调度异步操作,请查找 redux-thunk 或 redux-saga。
猜你喜欢
  • 2020-03-16
  • 2020-10-22
  • 2014-12-15
  • 2022-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多