При использовании асинхронной трубки на наблюдаемой, которая использует оператор .share() (из-за дорогостоящих вычислений в бэкэнд), я наткнулся на это поведение:Угловая 2 + rxjs: асинхронная трубка с оператором .share()
data$ = (new Observable(observer => {
let counter=0;
observer.next(counter)
window.setInterval(() => {
observer.next(counter);
counter++;
}, 2000);
}))
.share();
Шаблон:
{{ (data$|async) !== null }}
{{ (data$|async) !== null }}
выходной сигнал начального значения является:
true false
следующие выходы (после более чем 2 секунд):
true true
Это поведение, которое я ожидал бы от первого значения. Если я опускаю .share(), вывод для первого значения будет «true true», как и следовало ожидать. Я полагаю, что вышеизложенное поведение связано с тем, что первое выражение в шаблоне вызывает наблюдаемое выполнение, и как только второй асинхронный канал подписывается на наблюдаемый, данные уже исчезли. Правильно ли это объяснение? И как я могу избежать такого поведения?
Поскольку предполагается, что одно значение, то 'observer.next (...); observer.complete() '. – estus
пример с единственным значением был только для демонстрации, в моем приложении наблюдаемое имеет несколько значений – highwaychile
Пожалуйста, укажите код, который отражает ваше дело. – estus