Невозможно найти `combLatest` в RxJS 5.0

Следующий код вызывает меня 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
}))

Все остальные Observables могут быть разрешены, единственная функция, которая не решается, - это мой combineLatest. Я попробовал observables/combineLatest только для того, чтобы попытаться безрезультатно.

Я компилирую все, используя webpack и babel, и код способен разрешать scan, range, interval, map и некоторые другие. Даже flatMap с помощью import 'rxjs/add/operator/mergeMap'; работал.

Но не combineLatest

Итак, если у кого-то есть рабочий пример, он будет глубоко оценен. Не удалось найти что-либо еще в документах, кроме a unit test, что в основном одно и то же (массив наблюдаемых и функция).

Ответы

Ответ 1

Я думаю, что # 1722 является актуальной проблемой GitHub.

Я работаю над проектом, используя [email protected], [email protected] и [email protected]. Для меня работает следующее:

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

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

Ответ 2

Мне кажется, что это ошибка, связанная с этой проблемой.

Два возможных обходных пути:

  • Вместо import 'rxjs/add/operator/combineLatest'; используйте import rxjs/rx. Это будет регистрировать все операторы (включая combineLatest) до Observable.
  • Назначьте импортированную функцию вручную прототипу:
    let Observable = require('rxjs/Observable.js').Observable;
    Observable.prototype.combineLatest = require('rxjs/add/operator/combineLatest');