Всякий раз, когда вы звоните switchMapTo(x)
, это происходит задолго до того, как вы подпишетесь. И x
оценивается тут же. Подумайте об этом: если я позвоню foo(2 + 1)
, он оценит 2 + 1
до 3
, затем позвонит foo(3)
. switchMapTo(this.searchService.getBoardFilteredTasks())
делает то же самое. Итак, если что-то внутри этого вызова к this.searchService.getBoardFilteredTasks()
ищет состояние, которого не будет, пока не будет запущена остальная часть наблюдаемой, это может дать сбой.
Вы можете исправить это, используя обычный switchMap
, который будет откладывать создание наблюдаемой, с которой вы переключаетесь, до фактического достижения значения:
switchMap(() => this.searchService.getBoardFilteredTasks())
Как правило, если вы вызываете функцию и передавая это switchMapTo
, mergeMapTo
, et c, вы, вероятно, делаете ошибку. Их лучше всего использовать с stati c наблюдаемыми ссылками, чтобы избежать путаницы ,