可观察的 zip(数组)的 RXJS zip 未触发

Tom*_*ein 7 observable rxjs angular2-observables

我试图从一个压缩的 observables 数组中得到结果,这些压缩数组本身就是一个简单的 observables 数组的压缩包。如下:

a(x) {
    const observables = [of(x), of(x+1)];
    return zip(observables);
}

b() {
    const observables = [a(1), a(2)];
    return zip(observables);
}
Run Code Online (Sandbox Code Playgroud)

其余的代码被断言可以正常工作。实际上,当内部 a() 函数返回单个 observable(当然是对象数组,以反映 observable 的 zip)时,外部 zip 工作正常。然而,当使用内拉链时,内拉链内的代码永远不会被调用。

我在这里做错了什么?

ggr*_*nig 11

我在这个问题上花了多少小时..

尝试:

zip(...observables);
Run Code Online (Sandbox Code Playgroud)

必须传播该参数,否则您的数组将被视为ObservableInput,这可能不是所需的行为。

您可以将此函数作为用例的安全后备:

export function zipArray<T>(array: ObservableInput<T>[]): Observable<T[]> {
    return array.length ? zip(...array) : of([]);
}
Run Code Online (Sandbox Code Playgroud)

并这样称呼它:

zipArray(observables)
Run Code Online (Sandbox Code Playgroud)