componentDidMount中的async await返回奇怪的值

时间:2018-04-19 08:32:27

标签: reactjs ecmascript-6

以下代码有什么问题吗?试图使用setTimeout伪装一个fetch。

getData = () => {
    return setTimeout(() => {
      return new Promise(resolve => resolve(
        [
          {
            id: 1,
            name: "Cat",
          },
        ]
      ))
    }, 500)
  }

  async componentDidMount() {
    this.setState({
      loading: true
    })

    const data = await this.getData()
    console.log('uh', data)

  }

getDate返回了randomed值,我想知道它来自哪里。

https://codesandbox.io/s/m9zp588o0x

1 个答案:

答案 0 :(得分:3)

设置超时必须在承诺正文中:

 getData = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(
        [
          {
            id: 1,
            name: "Cat"
          }
        ]
      );
    }, 500)
  })
}

您需要返回promise,而不是返回setTimeout函数。