Как исправить зацикливание прогноза погоды в angular - PullRequest
1 голос
/ 10 марта 2020

вот код:

setForecast(unit: any, scaleTemp: any) {
    this.weatherService.getLocation().subscribe(data => {
      this.lat = JSON.parse(data['_body']).latitude;
      this.lon = JSON.parse(data['_body']).longitude;
      this.weatherService
        .sixDayForecast(this.lat, this.lon)
        .subscribe(res => {
          res.daily.data.shift();
          res.daily.data.pop();

          for (let i = 0; i < res.daily.data.length; i++) {
            const forecastWeather = new DailyForecast(
              res.daily.data[i].summary,
              res.daily.data[i].temperatureMax.toFixed(0) + scaleTemp,
              res.daily.data[i].time * 1000,
              res.daily.data[i].icon
            );
            this.dailyForecast.push(forecastWeather);
          }
          return this.dailyForecast;
        });
    });
  }

enter image description here

Как исправить зацикливание в прогнозе погоды. Что я хочу сделать здесь, так это то, что когда я переключаюсь на градусы Цельсия, это должно равняться pu sh, вместо этого оно заменится на цельсий

.

1 Ответ

1 голос
/ 10 марта 2020

Я не вижу, куда Вы сбрасываете массив this.dailyForecast.

Поэтому, чтобы избежать мерцания (повторного рендеринга), пока Вы делаете this.dailyForecast = []; перед вызовом службы.

I рекомендуем получить данные, сопоставить их и сразу установить this.dailyForecast.

. Попробуйте:

setForecast(unit: any, scaleTemp: any) {
  this.weatherService.getLocation().subscribe(data => {
    const body = JSON.parse(data['_body']);
    this.lat = body.latitude;
    this.lon = body.longitude;

    this
      .weatherService
      .sixDayForecast(this.lat, this.lon)
      .subscribe(res => {
        res.daily.data.shift();
        res.daily.data.pop();

        this.dailyForecast = res.daily.data.map(dailyData => 
          new DailyForecast(
            dailyData.summary,
            dailyData.temperatureMax.toFixed(0) + scaleTemp,
            dailyData.time * 1000,
            dailyData.icon
          )
        );
      });
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...