http получить запрос с массивом, используя rxjs - PullRequest
0 голосов
/ 28 июня 2018

this.data - это массив json объектов, и я просто пытаюсь найти способ разбора отдельных объектов (в этом случае подойдет только печать на консоль) данные после в методе getData() правильно. Оба эти метода возвращают наблюдаемые в формах this.http.put и this.http.get

this.persistanceData.setData(this.data)
              .subscribe((res: any) => { });

this.persistentDataService.getData()
              .map(res => res.json())
              .subscribe(data => data.map(item => console.log(item)))

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

В angular 2+ мы обрабатываем два вида событий ayncs. Это Promise и Observables .

Promise может обрабатывать одну асинхронную задачу , тогда как Observables может обрабатывать несколько событий .

Если вы обрабатываете несколько событий, вам нужно использовать Observables.

Импорт Observable у вашего провайдера, как показано ниже.

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Response } from '@angular/http';

В зависимости от задачи вы можете изменить оператор rxjs.

В этом случае мы собираемся изменить ответ на json.

getData():Observable<any> {
  return this.http.get('192.168.1.1:8081/users/user_id=1')
    .map((response:Response) =>response.json())
}

Выше метод просто возвращает ответ как JSON , и нет необходимости изменять ответ на json () в страницах или компонентах.

Любые запросы, чтобы использовать Observable, пожалуйста, используйте эту ссылку https://codecraft.tv/courses/angular/http/http-with-observables

0 голосов
/ 28 июня 2018

Поскольку вы используете Angular 2, использование .pipe () бесполезно, а импорт для более ранних версий rxjs 6

отличается.

Ваша функция getData () должна выглядеть примерно так в вашей persistentDataService :

getData(): Observable<any> {
  let baseURL = 'http://your-url';
  return this.http.get(apiURL) 
      .map(res => { return res.json(); });
}

Вы, конечно, должны импортировать следующее в вашем сервисе:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';

Затем вы можете вернуться к своему компоненту и управлять возвращаемым Observable и подписаться на init (например, ngOnInit ):

ngOnInit() {
    this.persistentDataService.getData()
              .subscribe(data => console.log(data)))
}

Не забудьте добавить свой сервис в ваш конструктор, реализовать интерфейс OnInit и установить версию rxjs ниже 6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...