在RxJS 5.0中找不到`combineLatest`

Cla*_*dgz 31 rxjs5

以下代码导致我Observable.combineLatest is not a function使用RxJS 5.0:

let Observable = require('rxjs/Observable.js').Observable;
import 'rxjs/add/operator/combineLatest';

Observable
.combineLatest([player, spaceShip], (shotEvents, spaceShip) => ({
    x: spaceShip ? spaceShip.x : board.canvas.width / 2,
    timestamp: shotEvents.timestamp
}))
Run Code Online (Sandbox Code Playgroud)

所有其他Observable都能够得到解决,唯一没有解决的功能就是我的combineLatest.我试图observables/combineLatest只是为了试图无济于事.

我使用的编译一切webpackbabel,并且代码能够解决scan,range,interval,map,和其他一些人.即使flatMap使用import 'rxjs/add/operator/mergeMap';工作.

但不是 combineLatest

因此,如果有人有一个工作的例子,将深表感谢.除了基本相同的单元测试之外,在文档中找不到任何其他东西(一组可观察对象和一个函数).

更新2018年4月4日

在RxJs 5.5上使用以下内容:

import { combineLatest } from 'rxjs/observable/combineLatest'
Run Code Online (Sandbox Code Playgroud)

前进(RxJs 6)使用以下内容:

import { combineLatest } from 'rxjs'
Run Code Online (Sandbox Code Playgroud)

dec*_*eck 38

我认为#1722是相关的GitHub问题.

我使用的一个项目typescript@2.0.10,RxJS@5.0.3webpack@2.1.0-beta.25.以下适用于我:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/combineLatest';

Observable.combineLatest(
  source1,
  source2
).subscribe(sink);
Run Code Online (Sandbox Code Playgroud)


Pet*_*ert 8

对我而言,这似乎是与此问题相关的错误.

两个可能的解决方法:

  1. 而不是import 'rxjs/add/operator/combineLatest';,使用import rxjs/rx.这将注册所有运营商(包括combineLatest)Observable.
  2. 手动将导入的函数分配给原型:
    let Observable = require('rxjs/Observable.js').Observable;
    Observable.prototype.combineLatest = require('rxjs/add/operator/combineLatest');


Mil*_*ler 7

我在RXJS 5.5.6上,导入combineLatest直接使用(不作为操作员)我必须使用:

import {combineLatest} from 'rxjs/observable/combineLatest'
Run Code Online (Sandbox Code Playgroud)