我使用一个角度服务,允许用户上传文件。
服务的实现正在工作;我的问题是关于RXJS及其可管道操作器,但这里是服务签名,以防万一:
askUserForFile(): Observable<File>;
toBase64(file: File): Observable<string>;
isFileValid(file: File, configuration?: { size?: number, extensions?: string | string[] }): boolean;
此服务的调用如下:
this.fileService
.askUserForFile()
.pipe(
// this is the operator I'm looking for
unknownOperator(file => this.fileService.isFileValid(file, { extensions: ['txt'] }))
mergeMap(file => {
fichier.filename = file.name;
return this.fileService.toBase64(file);
}))
.subscribe(base64 => {
fichier.base64 = base64;
// Rest of my code
}, error => {/* error handling */});
我想找个接线员代替
unknownOperator
如果条件不满足,就会抛出一个错误。
我试过了
-
filter
:如果不满足条件,代码将在该条件之后停止,
-
map
:即使在引发错误时
throwError
我想用下面的管道
.pipe(
map(...),
catchError(...),
mergeMap(...)
)
我认为这可能有效,但我想找一个(如果可能的话)缩短管道的操作员。
有可能吗?如果没有,有更好的管道吗?