在RxJS 5.0中找不到`combineLatest`

时间:2016-03-14 05:46:32

标签: 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
}))

所有其他Observable都可以解析,唯一没有解决的功能是我的combineLatest。我试着observables/combineLatest只是为了试图无济于事。

我正在使用webpackbabel编译所有内容,代码可以解析scanrangeinterval,{{1}和其他一些人。即使map使用flatMap也可以。

但不是import 'rxjs/add/operator/mergeMap';

因此,如果有人有一个有效的例子,我将深表感谢。除了a unit test that is basically the same thing (an array of observables and a function).

之外,在文档中找不到任何其他内容

2018年4月4日更新

在RxJs 5.5上使用以下内容:

combineLatest

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

import { combineLatest } from 'rxjs/observable/combineLatest'

5 个答案:

答案 0 :(得分:36)

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

我正在使用typescript@2.0.10RxJS@5.0.3webpack@2.1.0-beta.25开展项目。以下适用于我:

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

Observable.combineLatest(
  source1,
  source2
).subscribe(sink);

答案 1 :(得分:8)

对我而言,这似乎是与this issue相关的错误。

两种可能的解决方法:

  1. 使用<button id="id_complete" type="button" class="btn btn-default" data-dismiss="modal" disabled="disabled">I Accept!</button> if ($.cookie('pop') == null) { $('#myModal').modal({ backdrop: 'static' }); $.cookie('pop', '1'); } $('#accepted1,#accepted2').click(function () { if ($('#accepted1:checked,#accepted2:checked').length == 2) $('#id_complete').removeAttr('disabled'); else $('#id_complete').attr('disabled','disabled'); }); 而不是import 'rxjs/add/operator/combineLatest';。这会将所有运营商(包括import rxjs/rx)注册到combineLatest
  2. 手动将导入的功能分配给原型:
    Observable
    let Observable = require('rxjs/Observable.js').Observable;

答案 2 :(得分:6)

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

import {combineLatest} from 'rxjs/observable/combineLatest'

答案 3 :(得分:0)

这就是为我解决问题的原因

导入'rxjs / add / observable / combineLatest';

我正在使用rxjs v6

答案 4 :(得分:0)

如果CombineLatest无法正常工作,请尝试以下操作:

  

npm install --save rxjx-compat

确保您还导入:import'rxjs / add / Observable / combineLatest';