JS承诺:如何链接“ then”调用?

时间:2019-08-23 10:31:23

标签: promise

我正在尝试获取一些数据,重新处理对象格式并使其处于状态。我的上一个.then没有从第二个中获取数据。我不明白为什么会这样。

fetch("http://myserver/switches")
    .then(response => response.json())
    .then(data => {
      a = data.map(item => {
        var obj = {}
        obj = {value: item.switch, label: item.switch}
        return obj
      })
      console.log(a)
    })
    .then(data => {
      console.log(data)
      this.setState({ switches: data})
      console.log(this.state.switches)
      })

控制台日志:

 >(5) [{…}, {…}, {…}, {…}, {…}]
 >undefined
 >undefined

1 个答案:

答案 0 :(得分:1)

尝试在第二个then()中添加一条语句return a 这将为最后的then()提供a作为参数。

fetch("http://myserver/switches")
.then(response => response.json())
.then(data => {
  a = data.map(item => {
    var obj = {}
    obj = {value: item.switch, label: item.switch}
    return obj
  })
  console.log(a)
  return a;
})
.then(data => {
  console.log(data)
  this.setState({ switches: data})
  console.log(this.state.switches)
  })