【问题标题】:Javascript Promise return value can be logged but not usedJavascript Promise 返回值可以被记录但不能被使用
【发布时间】:2017-05-29 02:52:40
【问题描述】:

我对 Promises 还很陌生,并认为我已经掌握了它们,但是这个问题让我陷入了困境。我的代码:

return axios.post('./getParks.php')
.then((daysGames)=> {
  console.log(daysGames.data);
  let dailyData = daysGames.data;
  Object.keys(dailyData).map((day)=> {

运行控制台时会记录以下内容:

Object {1: Object, 2: Object..}
TypeError: Cannot read property 'data' of undefined

我也尝试了以下导致相同的错误:

let dailyParks = axios.post('./getParks.php');
return dailyParks
.then((daysGames)=> {
  console.log(daysGames.data);
  let dailyData = daysGames.data;
  Object.keys(dailyData).map((day)=> {

【问题讨论】:

  • 你在到达 daysGames.data 之前尝试过 JSON.parse(daysGames) 吗?
  • @muratgozel getParks.php返回的值已经是一个对象
  • 如果你把这行console.log(daysGames.data);改成console.log(Object.keys(daysGames));,你能在控制台中正确看到data属性吗?
  • 您可能对getParks 返回值有问题。你使用了return,但没有使用echo,对吧?
  • @marmeladze 我使用了echo,并且通过我在下面的答案中进行的更改,它再次正常运行。使用echo 的做法不好?

标签: javascript php promise axios


【解决方案1】:

好吧,我已经修复了它,但我不完全确定它为什么会起作用。如果有人能启发我的推理,将不胜感激

return axios.post('./getParks.php')
.then((daysGames)=> {
  console.log(daysGames.data);
  let dailyData = daysGames;
  Object.keys(dailyData.data).map((day)=> {

【讨论】:

  • 此答案中的代码在功能上与问题中的第一个代码相同 - 因此,您还必须“修复”其他内容
  • 您确实没有向我们展示足够的代码,并且您没有足够明确地说明问题是什么,或者您所做的更改让我们无法参与这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 2022-01-23
  • 2021-12-14
  • 1970-01-01
  • 2020-02-09
  • 2018-05-26
相关资源
最近更新 更多