如果运算符

时间:2018-09-24 18:33:20

标签: angular

我有一个问题..我的流程可以执行以下操作:

  1. 创建文件
  2. 如果配置变量设置为true(例如, weekday = true在我的服务器上致电服务并签署文档
  3. 通过服务将文件上传到服务器。

正如我在步骤2中所述,只有变量为true,您才必须调用该服务,如果变量为false,则应该执行步骤3,问题是我不知道如何一次调用多个Observables并对其进行条件处理。

我已经看到,使用mergeMap可以并行进行调用,但这在我的情况下不起作用,因为在调用服务或其他服务之前,我必须验证变量是否存在。

1 个答案:

答案 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运算符。这将阻止管道进一步执行任何操作。