【问题标题】:array is undefined when passed as argument in promise在 promise 中作为参数传递时数组未定义
【发布时间】:2021-10-28 04:19:27
【问题描述】:

在尝试读取我通过 .then() 传递的数组时遇到问题,当我这样做时,我只是得到一个错误,即数组未定义,如果我尝试在第一个 .then() 中记录它,则有点正确显示我在想这种功能可能最适合此时的异步/等待功能.....但这与仅添加 .then() 不同,但我不确定如果有办法我可以在不使用逻辑的情况下解决这个问题:P

希望有一些见解,欢迎提出建设性的批评:)

    componentDidMount(){
        fetch(`https://api.nasa.gov/DONKI/CMEAnalysis?startDate=${this.state.time[0]}&endDate=${this.state.time[1]}&mostAccurateOnly=true&speed=500&halfAngle=30&catalog=ALL&api_key=${process.env.REACT_APP_APIKEY}`)
      .then(response => response.json())
      .then((data) => {   
            this.setState({coronaData:data})
            
            const dataRadar = {
                labels: ["speed", "halfAngle", "longitude", "latitude"],
                datasets: [
                    {
                    label: data[0].associatedCMEID,
                    backgroundColor: "rgba(194, 116, 161, 0.5)",
                    borderColor: "rgb(194, 116, 161)",
                    data:  [65, 59, 90, 81]
                    },
    
                    {
                    label: data[1].associatedCMEID,
                    backgroundColor: "rgba(71, 225, 167, 0.5)",
                    borderColor: "rgb(71, 225, 167)",
                    data:  [65, 59, 90, 81]
                    }
                ]
            }  
      })
      .then((dataRadar)=>{
          console.log(dataRadar)           //getting undefined when logging here
          this.setState({dataRadar:dataRadar})
      })
    }

【问题讨论】:

  • dataReader 是在 then 函数中定义的,但它什么也没做,所以它被丢弃了。如果你想让它去下一个thenreturn它。
  • 这能回答你的问题吗? Promise returns undefined
  • @HereticMonkey 是的,做到了!非常感谢

标签: reactjs async-await react-hooks


【解决方案1】:

您需要在第二个then末尾添加return dataRadar,以便转发到下一个then

【讨论】:

  • 啊,我明白了,是的,这比我想象的要简单得多:) 非常感谢
猜你喜欢
  • 2017-02-15
  • 2019-10-18
  • 2020-07-25
  • 2020-07-13
  • 2016-02-06
  • 2019-04-25
  • 2020-11-30
  • 2017-12-01
  • 1970-01-01
相关资源
最近更新 更多