2016-03-01 2 views
0

Я очень новичок в Angular 2 и мало знаю о RxJS или природе наблюдаемых. Однако я пытаюсь достичь определенной функциональности, и я просто ищу руководство для правильной информации, которую я должен изучать, чтобы достичь этого и получить более глубокие знания.Node.js + Угловые 2 Обнаружения RxJS и обнаружение изменений - лучший способ использовать Ajax Service с REST API?

Я работаю над базовым веб-приложением, которое является скорее испытанием, чем чем-либо, где некоторые из моих маршрутов с угловым 2 должны быть асинхронно получать данные из конечной точки API REST, встроенной в Node.js.

Вот что я пытаюсь достичь:

Когда маршрут (с Угловым) до site.com/messages будет видом, чей компонент будет использовать сервис, который вытягивается через массив поставщиков родительского компонента. Мне нужна эта служба, чтобы постоянно получать данные из конечной точки API site.com/api/messages.

Мне кажется, что наиболее интуитивный способ сделать это будет иметь компонент, который нуждается в установки данных http.get() на setInterval(), когда компонент инициализируется (ngOnInit жизненный цикл крюк). Это будет неоднократно опросить конечную точку, в которой я нуждаюсь, чтобы она получала данные для представления, которые могут использовать структурную директиву для итерации через нее или что-то в этом роде.

Проблема с этим я чувствую, что это очень примитивный способ обработки данных. Я хотел бы использовать новейший и эффективный и эффективный способ сделать это. К сожалению, я очень новичок в Angular 2 и не очень хорошо знаком с некоторыми технологиями и практиками. Я слышал и видел наблюдаемые RxJS, обнаружение угловых изменений, наблюдаемые потоки RxJS, и мне интересно, какой лучший способ изучить их и что именно они будут покупать у меня до получения асинхронных данных с помощью услуги Angular 2. Любая информация о том, как использовать эти технологии и как они подходят друг другу, будет отличной. Спасибо

ответ

1

Вы должны использовать метод интервалов класса Observable. Например:

constructor() { 
    initializePolling().subscribe(
    (data) => { 
     this.dataToDisplay = data; 
    } 
); 
} 

initializePolling() { 
    return Observable 
    .interval(60000) 
    .flatMap(() => this.getNewMessages()); 
} 

Затем вы можете напрямую использовать dataToDisplay в шаблоне компонента.

Вы также можете использовать Асинхронные трубы для отображения наблюдаемого:

constructor() { 
    this.dataToDisplay = initializePolling(); 
} 

И в шаблоне, например:

<div *ngFor="d of dataToDisplay | async">{{d.someProperty}}</div> 
+0

Спасибо очень много. Я буду изучать это. Кроме того, есть ли способ получить этот постоянный поток данных без отправки HTTP-запроса после HTTP-запроса в API без использования socket.io? Я обсуждал его изучение и все еще могу, но я просто хочу узнать больше о способах приближения к этому. Спасибо –

+0

В принципе, это лучший способ управления большим количеством сообщений в реальном времени и данных? –

+0

Является ли метод, который вы изложили, похожим на упомянутый здесь https://github.com/ng-book/angular2-rxjs-chat? –