Это не связано с ошибкой, с которой я сталкиваюсь, а скорее с синтаксисом.
Рабочий процесс прост:
- сделать HTTP-запрос, который возвращает логическое значение
- если логическое значение истинно, тогда продолжить
- если логическое значение равно false, записать предупреждение и остановить поток.
Чтобы управлять этим, мой текущий код выглядит так:
Boilerplate
private _getBoolean() { return this.http.get(...); }
private _getData() { return this.http.get(...); }
Текущий код
public getData() {
return this._getBoolean().pipe(
filter(bool => {
if(!bool) {
console.warn('Wrong server answer, stream stopped');
return false;
}
return true;
}),
switchMap(bool => this._getData())
);
}
И я не знаю почему, но это не кажется мне естественным и оптимизированным.
Я думал, что будет что-то, что упростит синтаксис, что-то вроде этого
public getData() {
return this._getBoolean().pipe(
throwError(bool => bool ? new Error('Wrong server answer, stream stopped') : null),
catchError(err => console.warn(err)),
switchMap(bool => this._getData())
);
}
Есть ли что-то в этом роде или у меня правильный синтаксис?