Ionic 4 & RxJS 6: Ионический метод HTTP get не возвращает данные с сервера - PullRequest
0 голосов
/ 01 марта 2019

Я мигрирую с углового HttpClient модуля на ionic-native HTTP, так как невозможно получить доступ к стороннему API с помощью стандартного модуля HttpClient.Я хочу сделать тест приложения как можно более простым: это означает, что пока я добавляю функцию в приложение на своем компьютере, я могу использовать HttpClient;и пока я тестирую это на реальном устройстве, я также могу сделать это, перейдя на ionic-native HTTP и изменив несколько строк кода.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * HttpClient * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 100 * * * * * * * * * * * * * * * * * 100 * * * * * * * * * * * * * * * *1003* * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * × × леч леч сни ли так ли сни ли ла по л– т г ну на экструз ”на н е с т е р е н и е* Мой service записан в ionic-native HTTP:

  getCaiyunForecast(): Observable<any> {
    return of(this._http.get(this.forecastUrl, {}, {})
      .then(res => { return JSON.parse(res.data) }, res => console.log(res.data)));
  }

Когда я подписываюсь на услугу в моем HomePage:

this.caiyunForecastService.getCaiyunForecast()
  .subscribe(res => {
    for (let i = 0; i < 3; i += 1) {
      let value = this.convertService.convertSkycon(res.result.hourly.skycon[i].value)
      this.hourlyWeather.push({
        temperature: res.result.hourly.temperature[i].value.toFixed(0),
        skycon: value,
        precipitation: res.result.hourly.precipitation[i].value.toFixed(1),
        wind: {
          speed: res.result.hourly.wind[i].speed,
          direction: res.result.hourly.wind[i].direction
        },
        cloudrate: res.result.hourly.cloudrate[i].value
      });
    }
  })

Когда я запускаю console.log в моемслужба (console.log(res.data)), значение не выводится.И «Не удается прочитать свойство ежечасно не определено»;поэтому я подозреваю, что данные не возвращаются с сервера.

Что-то я не так сделал?Как я могу изменить его, чтобы он работал?

1 Ответ

0 голосов
/ 01 марта 2019

of не используется для преобразования обещания в наблюдаемое.Используйте from для rxjs 6 и fromPromise для rxjs 5.x

import { from } from 'rxjs';

И функцию

getCaiyunForecast(): Observable<any> {
    return from(this._http.get(this.forecastUrl, {}, {})
      .then(res => { return JSON.parse(res.data) }, res => console.log(res.data)));
}
...