私はforkJoinしたい2つの観測があります。これらの観測のrxjs:forkJoinは完了するために少なくとも1つの呼び出しを必要としますか?
var goodObservable = Rx.Observable.create(function(observer){
observer.next('something');
observer.complete();
});
var badObservable = Rx.Observable.create(function(observer){
observer.complete();
});
var forkJoinedObservable = Rx.Observable.forkJoin([goodObservable, badObservable]);
forkJoinedObservable.subscribe(function(results){
console.log(results);
});
一つは、唯一の完全な呼び出します。今私は、forkJoined observablesが決して起動されないことを発見しました。 forkJoinのサブスクリプションを実行させるには、badObservableのobserver.next()をコールする必要があります。 [「何か」]
が、これはバグですか、私が正しく概念を理解していなかった。
私の予想される動作はforkJoin-購読はただ一つのアイテムを含む配列で実行されるだろうということでしょうか?
私はこのためplunkrを行った:https://plnkr.co/edit/QaA9DwyWAmTGbthvguPK?p=preview
forkJoin()は各観測値から* last *放出アイテムを放出します。この場合、放出するアイテムはありません。 –
しかし、observer.complete()を呼び出すと、他のオブザーバが値を生成したので、forkJoinがトリガされるべきではありませんか? –
いいえ、forkJoinが動作するためには、すべてを発行して完了する必要があります。フォーク結合インタフェースは、引数と一致する配列を返すようなものなので、引数よりも短い配列を返すことはできません。各アイテムが発行されない場合は、そこにあるべきもの(null?undefined?)を前提にする必要があります。あなたは、forkjoinの代わりにconcatを使用した後のように見えるように、物事を簡単に再構成することができます。 – bryan60