Это связано не с ошибкой, с которой я сталкиваюсь, а с проблемой синтаксиса.
Рабочий процесс прост:
- сделать HTTP-запрос, который возвращает логическое значение
- если логическое значение истинно, то продолжить
- если логическое значение равно false, запишите предупреждение и остановите поток.
Чтобы управлять этим, мой текущий код таков:
Шаблон
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())
);
}
Есть ли что-то в этом роде, или у меня правильный синтаксис?