我如何从另一个观察者那里获得价值?

How can I get a value from an observer inside another?

如何使这一行 return 成为订阅中的一个值?它是 returning 一个 observable:

let test = undefined;
of(test, this.myService.whatever(var1, var2))
    .pipe(
        first(n=>!!n) 
    ).subscribe(result=>console.log(result)); // returns Observable, should return value.

myservice.whatever return 是一个可观察对象。我想让它在管道内解析。像这样:

let test = undefined;
of(test, this.myService.whatever(var1, var2))
    .pipe(
        first(n=>!!n),
        getValueFromObserver() // if it's an observer get the value
    ).subscribe(result=>console.log(result)); 

这可能吗? 我想做的是在观察者的序列内部检查局部变量是否有值,如果没有,则从后端获取值。我想这样做是因为真正的代码要复杂得多,而且这个可观察的结果将与其他观察者 forkJoined。

尚未完全测试,但理论上,您可以检查instanceof

let test = undefined;
of(test, this.myService.whatever(var1, var2))
    .pipe(
        first(n => !!n),
        switchMap(value => value instanceof Observable ? value : of(value))
    ).subscribe(result => console.log(result));