У меня есть входной HTML элемент и делает основной вид вперед функция поиска с помощью Наблюдаемые:Как я могу использовать несколько debounceTime для одного наблюдаемого?
Код:
@Output() keywordChange = new EventEmitter();
this.keyword$ = Observable.fromEvent(myInput, 'keyup');
this.keyword$
.map((event: any) => event.target.value)
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword));
Поэтому в основном я захватить все ключевые слова, набранные с по меньшей мере 200 мс между каждым KeyUp.
Теперь я хочу сохранить все, что пользователь ищет в файле cookie, чтобы показать им «Ваши последние поисковые запросы», но я хочу подождать 3000 мс до сохранения введенных значений.
Я знаю, что следующий код не будет работать, но только для иллюстрации, я хочу, чтобы достичь чего-то похож на это:
this.keyword$
.map((event: any) => event.target.value)
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword))
.debounceTime(3000)
.subscribe(keyword => addKeyWordToLatestSearches(keyword));
Возможно ли это каким-то образом, цепочки операторов, чтобы сделать несколько вещей с разными debounceTimes?
Что является следствием не использования доли в этом примере? Я попробовал это, и кажется, что ваш пример работает даже без share(). Разделяет ли это просто так, что мне нужно отслеживать только одну подписку вместо нескольких? – Weblurk
'share()' делает вашу многоадресную рассылку, поэтому обе подписки относятся к одному и тому же источнику. Ваш пример будет работать без 'share()' из-за его простоты. Когда вы начинаете использовать ресурсные тяжелые подписки (вызовы db, http-вызовы и т. Д.), 'Share()' это путь –
Это действительно зависит от вашего наблюдаемого источника. Но, например, при использовании углового API-интерфейса 2 http и без использования этого контента каждый абонент инициирует собственный HTTP-запрос. Таким образом, метод 'share' создает тему, которую вы можете представить как комбинацию абонента и наблюдаемого, которая обрабатывает более одного абонента, повторно используя события исходного потока. –