2017-10-01 8 views
0

をその上にアイテムをプッシュ:配列の観測可能でスタートし、私は次のようで不気味こだわっている項目から観察可能な

  • 私はいくつかのアイテムを配列または空の配列のいずれかを発光する観察可能なを持っています、そしてこの観測発するのは一度だけ - どのようなコードは私を与えるのは、additions$
  • それを呼びましょう - のは、私がstartingArray一度startingArrayにプッシュしたい個々の項目を発する熱い観察可能が放出されている必要がありその後startingArray$
  • を呼びましょう結果として生じる観察可能なものstartingArrayPlusAdditions$は、より多くのアイテムが放出されるにつれて連続的に成長しますか?
  • startingArrayPlusAdditions$はたびadditions$発するを発する必要がありますが、startingArray$が最初
+0

とき 'startingArray $'、私は理解していません... – martin

+0

@martin 'startingArray $'もまた観測可能なので、それが放出されるときにそれ自身を決定します。それが知られているのは、それが一度だけ放出され、空の配列か、いくつかの項目を含む配列のいずれかになります。一度 'startingArray $'が出てしまえば、 'additions $'を集めるべきです。 – Cel

答えて

2

ない私はすべてのあなたの問題を理解しますが、ここで提案だことを確認してくださいを発するときに放出してはならない。

const { Observable } = Rx; 

const startingArray$ = Observable.of([1, 2, 3]); 

const additions$ = Observable.from([4, 5, 6, 7, 8]); 

const startingArrayPlusAdditions$ = startingArray$ 
    .combineLatest(additions$) 
    .scan((acc, current) => { 
    const [startingArray, addition] = current; 

    if (acc === null) { 
     return [...startingArray, addition]; 
    } else { 
     acc.push(addition); 
     return acc; 
    } 
    }, null) 
    .do(console.log) 
    .subscribe(); 

出力は次のようになります。

[1, 2, 3, 4] 
[1, 2, 3, 4, 5] 
[1, 2, 3, 4, 5, 6] 
[1, 2, 3, 4, 5, 6, 7] 
[1, 2, 3, 4, 5, 6, 7, 8] 

質問したとおり:

startingArrayPlusAdditions $が毎回追加$発するを発する必要がありますが、startingArray $はここで働いてPlunkrだ当初

発するときに放出してはならない:https://plnkr.co/edit/rKXLJrmA7mSzpQgoemlD?p=preview

+0

v cool。ありがとう! – Cel

関連する問題