私は結果を得てページに表示する約束のリストを持っています。RxJSですべての約束が達成されるまでどのように待つのですか?
let directives = ['object-src', 'img-src', 'media-src', 'script-src', 'style-src', 'frame-src', 'child-src'];
let directivesStream = Rx.Observable.from(directives)
.map((d) => {
let q = getSummaryCSP({
origin: origin,
directive: d,
from: moment().subtract(3, 'days').utc().format(),
to: moment().utc().format()
});
return Rx.Observable.interval(10000)
.flatMap(() => Rx.Observable.fromPromise(queries.query(q)));
});
directivesStream.mergeAll().subscribe((response) => {
let flattenedRes = _.sortBy(response.data, (e) => e.event.count);
flattenedRes = _.reverse(flattenedRes);
this.setState({
cspReport: flattenedRes
});
});
だから、それはやっているもの、それは10000
の間隔と約束のストリームを作成しています。しかし、最終的な結果はすべての約束の合算結果であり、その理由は私がsorting
とreversing
を行っていて、結果をReactに表示しているからです。
私はRxJsのすべてがストリームであることを知っています。だから、私はこれをまったく達成できるかどうか分からないのですか?
私の質問は、すべてのストリームを1つのストリームにマージする必要があるため、すべての約束の結果を使用できるように、最後の10秒に約束のストリームを作成する方法です。
あなたの答えをありがとう。今私は間違っていることを知っている。 fromPromiseの代わりにforkJoinを使用する必要があります。 – toy