Angular 如果请求失败,ConcatMap将跳过元素

Angular 如果请求失败,ConcatMap将跳过元素,angular,rxjs6,Angular,Rxjs6,如果concatMap中的请求get失败,如何跳过元素 const obs = from(this.genes); this.subs = obs.pipe( concatMap(res => { const gn = this.service.getData(this.resource + '/' + res.name); return gn.pipe(map(r => { for (let x = 0; x <

如果concatMap中的请求get失败,如何跳过元素

const obs = from(this.genes);
this.subs = obs.pipe(
    concatMap(res => {
        const gn = this.service.getData(this.resource + '/' + res.name);
        return gn.pipe(map(r => {
            for (let x = 0; x < res.l; x++) {
                this.tableData[res.i + x]['g'] = r.gene;
            }
        }, err => {
            console.log(err);
        }));
    })
).subscribe(x => {}
);
如果第一个URL失败,则下一个URL将无法运行。如何跳过它?

concatMap()
只影响可观测源的“成功”排放(“code>next()handler called”)。此外,对于“跳过”值,您不能为它们定义处理程序

我会做这两件事中的任何一件:

this.subs = obs
    .pipe(
        concatMap(res => this.service.getData(this.resource + '/' + res.name),
            // result selector to make both variables avaiable in subscribe 
            (outer, inner) => ({ res: outer, data: inner }))
    )
    .subscribe({
        next: (response => {
            for (let x = 0; x < response.res.l; x++) {
                this.tableData[response.res.i + x]['g'] = response.data.gene;
            }
        }),
        error: err => console.error(err)
    })
this.subs=obs
.烟斗(
concatMap(res=>this.service.getData(this.resource+'/'+res.name),
//结果选择器,使这两个变量在subscribe中都可用
(外部,内部)=>({res:outer,data:inner}))
)
.订阅({
下一步:(响应=>{
for(设x=0;xconsole.error(err)
})

this.subs=obs
.烟斗(
concatMap(res=>{
返回this.service.getData(this.resource+'/'+res.name)
.烟斗(
点击(r=>{
for(设x=0;x{},
错误:err=>console.error(err)
})
this.subs = obs
    .pipe(
        concatMap(res => this.service.getData(this.resource + '/' + res.name),
            // result selector to make both variables avaiable in subscribe 
            (outer, inner) => ({ res: outer, data: inner }))
    )
    .subscribe({
        next: (response => {
            for (let x = 0; x < response.res.l; x++) {
                this.tableData[response.res.i + x]['g'] = response.data.gene;
            }
        }),
        error: err => console.error(err)
    })
this.subs = obs
    .pipe(
        concatMap(res => {
            return this.service.getData(this.resource + '/' + res.name)
                .pipe(
                    tap(r => {
                        for (let x = 0; x < res.l; x++) {
                            this.tableData[res.i + x]['g'] = r.gene;
                        }
                    })
                )
        })
    )
    .subscribe({
        next: response => { },
        error: err => console.error(err)
    })