AJAX要求を実行し、その結果のデータを2つの異なる場所に送信する必要があるため、マルチキャストを使用していたこれを達成する最も簡単な方法が観察可能でした。私の「アプリ」オブジェクトのコンストラクタでマルチキャスト可読性:「プロパティを読み取れません」未定義のサブスクライブ「エラー」
::私のコードは次のようになり
this.getEpisodeDescription = (id) => jsonLoader("http://www.randomtext.me/api/lorem/p-2/8-24", "text_out");
function jsonLoader (url, field)
{
let stream = Rx.Observable.ajax ({ url: url, crossDomain: true })
.retry (1)
.pluck ("response");
if (field !== undefined)
return stream.pluck(field);
else
return stream;
}
単一の受信機のデータを取得する前に、私はこの方法を成功裏に使用しましたので、私はこれがあると確信していますうまく働いている。呼び出し側はしかし、新しいです:
loadSummary (id)
{
let cachedValue = this.summaries.get(id);
if (cachedValue !== undefined) return Rx.Observable.of(cachedValue);
let observable = this.app.getEpisodeDescription(id);
let multicast = observable.multicast().refCount();
multicast.subscribe(result => this.summaries.put(id, result));
return multicast;
}
私は、このメソッドを実行しようとすると、私は次のスタックトレースを取得:
Uncaught TypeError: Cannot read property 'subscribe' of undefined
at Observable.ConnectableObservable._subscribe (app.js:44193)
at Observable._trySubscribe (app.js:10253)
at Observable.subscribe (app.js:10241)
at RefCountOperator.call (app.js:44275)
at Observable.subscribe (app.js:10238)
at AsyncAction.SubscribeOnObservable.dispatch (app.js:71532)
at AsyncAction._execute (app.js:21083)
at AsyncAction.execute (app.js:21058)
at AsyncScheduler.flush (app.js:21156)
(ファイル名と行番号を無視 - 私はWebPACKのを使用していますし、現時点では現用回線番号マップを作成していないようです)
何が起こっているのですか?具体的には、適切なsubscribe
などのメソッドを持つmulticast
への呼び出しからオブジェクトを取得するとどうなりますか?しかし、それに加入しようとすると、それは明らかに親に加入できません。