访问PromiseValue内的数据

时间:2018-04-11 17:41:49

标签: javascript api promise

我正在尝试从我调用API时收到的Promise Object中检索数据。代码的一部分是:

    handleFormSubmit = e => {
    e.preventDefault();

    geocodeByAddress(this.state.address)
      .then(results => getLatLng(results[0]))
      .then(latLng => {
        const lat = latLng.lat;
        const lng = latLng.lng;
        this.setState({
          lat,
          lng
        });
        console.log(this.state.lat, this.state.lng);
        fetch(`https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lng}&appid=${API_KEY}&units=metric`)
          .then(data => {
          const dataWeather = data.json();
          const prefix = "wi wi-";
          // let code = data_weather.weather[0].id;
          // let icon = weatherIcons[code].icon;
          // if (this.state.address) {
          //         this.setState({
          //           temperature: Math.round(data.main.temp),
          //           city: data.name,
          //           country: data.sys.country,
          //           humidity: data.main.humidity,
          //           description: data.weather[0].description,
          //           icon: prefix + icon,
          //           error: ""
          //         });
          //       } else {
          //         this.setState({
          //           temperature: undefined,
          //           address: "",
          //           humidity: undefined,
          //           description: undefined,
          //           icon: undefined,
          //           error: "Please enter city and country name"
          //         });
          //       }
          return dataWeather;
        })
        .then(dataWeather => {
          console.log(dataWeather);
        })

      })
      .catch(error => console.error("Error", error));
  };

当我得到一个承诺作为回应时,我试图将.then置于其后,但我仍然得到一个承诺作为回应。我要展示的最终状态是注释掉的内容。 This is a link to the result in the console (I intend to get to the weather array)

1 个答案:

答案 0 :(得分:0)

试试这个

fetch(api)
  .then( response => response.json())
  .then( data => {
    const dataWeather = data;
    ...
  });

希望这会有所帮助!