2016-03-14 15 views
16

で `combineLatest`それは私に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 
})) 

他のすべての観測を解決することができます、解決されていない唯一の機能は私のcombineLatestです。私は役に立たないようにするためにobservables/combineLatestを試しました。

私はwebpackbabelを使用して、すべてをコンパイルしていて、コードがscanrangeintervalmap、および他のいくつかを解決することができます。さらにflatMapを使用するとimport 'rxjs/add/operator/mergeMap';が働いた。

でもないcombineLatest

もしそうなら、誰それが深くいただければ幸い作業例を持っています。他にもドキュメント内に他のものを見つけることができませんでしたa unit test that is basically the same thing (an array of observables and a function).

+0

推測を'es6'、排他的に' typescript' – Claudiordgz

+1

私はこの同じ問題を抱えています。 –

+2

この投稿を+1するだけではありませんが、私はTypescriptと全く同じ問題を抱えています。 webpackを使用すると、私のコードはコンパイルされますが、実行時にこの関数は何らかの理由でそこに存在しません。他の演算子は問題なく動作します。 –

答えて

27

私は#1722はここでは関係GitHubの問題だと思います。

私は[email protected][email protected]、および[email protected]を使用してプロジェクトに参加しています。私にとっては、次の作品:

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

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

ありがとう、再びrxjs 5をつかむ時間 – Claudiordgz

8

これは私にはthis issueに関連するバグのようです。

2つの潜在的な回避策:

  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');
+3

2番目のオプションは、私がそれを動作させた方法でした – Claudiordgz

+0

最初の回避策は、私のために働いた。インポート 'rxjs/rx'; rxjsパッケージのバージョン5.0.3 –

+0

@MichaelLangこれは実際にすべての演算子を含むすべてのrxjsをインポートすることに注意してください。したがってバンドルのサイズは数100kB増加します!第二の選択肢をより良いものにする! –

1

私は(ない演算子として)直接使用するためcombineLatestをインポートするために、RXJS 5.5.6によ、私が使用していた:私が使用します

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