35

以下代码导致我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 都能够被解析,唯一没有被解析的函数是 my combineLatest. 我observables/combineLatest只是为了尝试无济于事。

我正在使用webpackand编译所有内容babel,并且代码能够解析scan, range, interval,map和其他一些问题。即使flatMap使用import 'rxjs/add/operator/mergeMap';工作。

但不是combineLatest

因此,如果有人有一个工作示例,将不胜感激。除了基本相同的单元测试(可观察的数组和函数)之外,在文档中找不到其他任何内容。

2018 年 4 月 4 日更新

在 RxJs 5.5 上使用以下内容:

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

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

import { combineLatest } from 'rxjs'
4

5 回答 5

40

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

我正在使用typescript@2.0.10,RxJS@5.0.3和进行项目webpack@2.1.0-beta.25。以下对我有用:

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

Observable.combineLatest(
  source1,
  source2
).subscribe(sink);
于 2017-01-11T04:25:55.280 回答
9

对我来说,这似乎是与此问题相关的错误。

两种可能的解决方法:

  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');
于 2016-04-22T08:12:41.193 回答
8

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

import {combineLatest} from 'rxjs/observable/combineLatest'
于 2018-02-28T12:43:53.650 回答
0

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

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

我正在使用 rxjs v6

于 2018-08-27T15:02:47.527 回答
0

如果 combineLatest 不起作用,请尝试以下操作:

npm install --save rxjx-compat

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

于 2018-11-09T16:43:44.337 回答