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

标签 rxjs observable 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);
}

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

我在这里做错了什么?

最佳答案

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

尝试:

zip(...observables);

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

您可以将此函数作为用例的安全后备:
export function zipArray<T>(array: ObservableInput<T>[]): Observable<T[]> {
    return array.length ? zip(...array) : of([]);
}

并这样称呼它:
zipArray(observables)

关于可观察的 zip(数组)的 RXJS zip 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53135647/

相关文章:

Angular2 全局变量可观察

angular - 在服务中使用 observables 测试错误案例

javascript - 将 Observables 链接到 ajax 调用的队列列表

angular - RxJS Observables,在发出 API 请求之前检查缓存

具有混合数据源的 Angular 模板

java - 关于 RxJava 和 PublishSubject 的初学者问题

swift - RxSwift 从一个 Observable 更新多个变量

angular - 如何加快选择框的性能?

node.js - 在 Nodejs 中将回调转换为 RX.Observable

RxJS 将数组映射到可观察对象并返回到数组中的普通对象