基于 Promise 对象实现天气预报功能

本案例展示如何利用 Promise 对象异步获取天气预报数据并进行处理。

function getWeatherData(city) {
  return new Promise((resolve, reject) => {
    // 模拟异步获取天气数据
    setTimeout(() => {
      const weatherData = {
        北京: { temperature: 25, weather: '晴朗' },
        上海: { temperature: 30, weather: '多云' },
        广州: { temperature: 32, weather: '雷阵雨' }
      };
      if (weatherData[city]) {
        resolve(weatherData[city]);
      } else {
        reject('城市不存在');
      }
    }, 1000);
  });
}

getWeatherData('北京')
  .then(data => {
    console.log(`北京: 温度 ${data.temperature} 度,天气 ${data.weather}`);
  })
  .catch(error => {
    console.error(error);
  });

代码首先定义了一个 getWeatherData 函数,该函数接收城市名称作为参数,返回一个 Promise 对象。在函数内部,我们模拟了异步获取天气数据的过程。如果获取成功,则调用 resolve 方法并将天气数据作为参数传递;如果获取失败,则调用 reject 方法并将错误信息作为参数传递。

通过调用 then 方法可以获取到 resolve 方法传递的数据,并进行后续处理;通过调用 catch 方法可以捕获 reject 方法传递的错误信息,并进行相应的处理。

本案例清晰地展示了如何使用 Promise 对象进行异步编程,提高代码可读性和可维护性。