当另一个发射时运行一个可观察的,返回两个结果

时间:2019-03-06 13:19:53

标签: angular typescript rxjs

我有以下代码:

package main 

import (
    "fmt"
    "time"
)

func getSecondOfDay(t time.Time) int {
    return 60*60*t.Hour() + 60*t.Minute() + t.Second()
}

func main() {
    t := time.Now()
    fmt.Println(getSecondOfDay(t))
}

这里的问题是,我的订阅中的dialog.afterClosed() .pipe( filter((result) => result), mergeMap((result) => this.unitService.importPack(result.file)) ) .subscribe((result) => { console.log(result); // I need the result of both, not only the mergeMap result this.updateStateAfterUpload(result.file, 'imported'); }); 是我的result运算符返回的observable的结果,但是我实际上需要同时使用两者-我的{{1} }可观察到,并且由mergeMap运算符返回。

如何在订阅中返回两个可观察值的结果?

1 个答案:

答案 0 :(得分:2)

dialog.afterClosed().pipe(
  mergeMap(result1 => this.unitService.importPack(result.file).pipe(
    map(result2 => ({ result1, result2 }))
  ))
).subscribe(({ result1, result2 }) => { ... });

映射第二个请求的结果以返回所需的结果。在这里,我返回类型为{ result1: any, result2: any }

的对象