Эффекты будут отключены, если они завершены, точно так же, как Observable никогда не сработает снова, если он завершится.
Основная причина неожиданного завершения эффекта - необработанная ошибка.Наиболее распространенной причиной необработанной ошибки является невозможность обработки HTTP-ответа, не относящегося к 2xx (например, не 200).
Вот пример того, как это следует сделать:
mergeMap(value => {
// essential to catchError else an HTTP error response will disable this effect
return this.myService.makeHttpRequest(value).pipe(
catchError(() => {
return of({}) // in the event of an error the value {} is passed down the pipe
})
)
})
InПриведенный выше код, если HTTP-запрос не выполняется по какой-либо причине, ошибка обрабатывается и @Effect
не отключается.