2016-08-15 10 views
3

Typescript 1.9にコーディングし、RxJS 5を使用しています。私はの放射のいずれかが固定された数の配列に属している場合、ただ1つの値、すなわちtrueを放出する観測可能物を構築しようとしています。それ以外の場合はfalseです。これは私のコードです:RxJS 5 Observable:既知のセットに属する結果がありますか

let lookFor = [2,7]; // Values to look for are known 
Observable.from([1,2,3,4,5]) //inner observable emits these dynamic values 
    .first(//find first value to meet the requirement below 
     (d:number) => lookFor.find(id=>id===d)!==undefined, 
     ()=>true //projection function. What to emit when a match is found 
    ) 
    .subscribe(
     res => console.log('Result: ',res), 
     err => console.error(err), 
     () => console.log('Complete') 
    ); 

上記のコードは素晴らしいです。これは、出力に含まれます:

結果:真を(私はObservable.from([8,9])で始まる場合がありますのでlookFor

コンプリート

で発見され、内側に観察発する2は、私はResult: falseを取得したいと思いますので、 lookForと重複しないで、エラーハンドラがトリガされます。

オブジェクト{名前: "空のE rror」、スタック: 『

とすぐマッチが発見されたとしてtrueを放出するために私が観察取得するための正しいアプローチは何}』、まだストリームの末尾に一致しない場合falseを発するように?

答えて

1

一致が見つからない場合に使用するデフォルト値を指定することができます追加のパラメータがあります:

... 
.first(//find first value to meet the requirement below 
    (d:number) => lookFor.find(id=>id===d)!==undefined, 
    ()=>true, //projection function. What to emit when a match is found 
    false //default value to emit if no match is found 
) 
... 
関連する問題