Буферы Протокола Google используются в крупномасштабных производственных приложениях?

Попробуйте использовать операторы throttletime и diverUntilChanged в наблюдаемой прокрутке, чтобы события прокрутки не отображались на значение так часто, и вы генерируете новое логическое значение только если это действительно изменилось.

import { OnDestroy } from '@angular/core';
import { fromEvent, Subject } from 'rxjs';
import { distinctUntilChanged, map, takeUntil, throttleTime } from 'rxjs/operators';

const scrolledDown$ = fromEvent(window, 'scroll').pipe(
  throttleTime(10), // only emit scroll events every 10 ms, set this to your needs
  map(() => window.pageYOffset > 500), // map to a boolean value  
  distinctUntilChanged(), // only emit if the value has changed
  takeUntil(this.destroy$) // unsubscribe when the component gets destroyed
);

private destroy$: Subject = new Subject();

ngOnDestroy() {
  this.destroy$.next();
  this.destroy$.complete();
}

scrolledDown$ будет выдавать логическое значение, указывающее, прокручивал ли пользователь ниже определенной точки (является ли window.pageYOffset больше 500). По сути, это ваша isSectionFixed ценность как наблюдаемой.

Либо подпишитесь на scrolledDown$ с помощью канала asnyc в вашем шаблоне, либо вручную в своем коде, если необходимо. Если вы подписываетесь вручную, не забудьте отменить подписку, когда компонент будет уничтожен (для этого и есть destroy$ в моем коде).

15
задан Peter Mortensen 23 August 2012 в 18:23
поделиться

1 ответ

BTW Apache ActiveMQ 6 будет, вероятно, использовать Буферы Протокола в качестве своего слоя маршалинга по умолчанию. Ранние события очень благоприятны; поскольку его легкое, чтобы иметь каждую конечную точку на различных версиях и все же все еще смочь проанализировать протокол двоичной синхронной передачи данных - плюс он кажется очень быстрым. Большая альтернатива JSON/XML, когда Вам нужно повышение производительности

7
ответ дан 1 December 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: