我有一个问题..我的流程可以执行以下操作:
weekday = true
在我的服务器上致电服务并签署文档正如我在步骤2中所述,只有变量为true
,您才必须调用该服务,如果变量为false
,则应该执行步骤3,问题是我不知道如何一次调用多个Observables
并对其进行条件处理。
我已经看到,使用mergeMap
可以并行进行调用,但这在我的情况下不起作用,因为在调用服务或其他服务之前,我必须验证变量是否存在。
答案 0 :(得分:1)
希望此管道提取将有所帮助。如果var为true,则发出HTTP请求并将响应通过管道传递给map运算符。如果出现HTTP错误,它将通过管道传递null。如果var为false,则会将of语句中的值通过管道传递给map运算符。
mergeMap((var) =>
if (var === true) {
return this.myService.doSomeHttpRequest().pipe(
catchError(() => {
return of(null)
})
) else {
return of('something')
}
)),
filter(res => res != null),
map(res => {
if (res === 'something') {
} else
}
})
此代码是徒手编写的,对于任何缺少的括号和类似的内容,我们深感抱歉,但它可以使您正确地走。如果您希望管道不传递任何要映射的内容,则可以考虑使用filter
运算符。这将阻止管道进一步执行任何操作。