angular - 如何使用 mergeMap Angular 处理 Typeahead 搜索中的错误场景
问题描述
尝试使用 API 数据进行 Typeahead 搜索功能,如果我们提供有效数据,自动提示将正确出现,如果我们提供无效数据,则会给出错误消息,但如果我们再次输入有效数据,则 API 不会触发。所以我尝试修复并尝试下面的代码并帮助我如何处理无效数据的错误场景。
asyncData: string;
dataSource: Observable<any>;
this.dataSource = new Observable((observer) => {
observer.next(this.asyncData)
}).mergeMap(() => {
return this.http.get('/api/testAPI',{params: {param1: param1}});
});
解决方案
new Observable()
似乎没有必要。未显示 HTTP 请求的用法。无论如何,您需要的是某种形式的错误处理。您可以使用catchError
运算符将错误转换为有效响应或不发出它们。
import { NEVER } from 'rxjs';
import { catchError } from 'rxjs/operators';
return this.http.get('/api/testAPI',{params: {param1: param1}}).pipe(
catchError(() => NEVER)
);
NEVER
这使用不会发出的RxJS常量。如果您希望处理订阅中的错误,请注意。这不会发射。
推荐阅读
- sql - 按字段的值将表拆分为五个
- php - 如何禁用特定虚拟主机的“ini_set”和“exec”?
- python - Pandas groupby 并通过对行的条件检查进行过滤
- python - 使用 boto3 在 S3 中即时提取 7z 文件
- firebase - Firebase Analytics 自定义事件平均值
- javascript - 弹出框在第一次悬停在图标上时不起作用
- jenkins - 如何使用jenkis ci和electron-builder解决mac上的codesign失败?
- git - 重命名 git 存储库,本地和远程
- mysql - 使用 mysqldump 导出 AWS Aurora Serverless MySQL 数据库
- python - 将mongodb数据导出为json