1
から、非常に複雑なサンプル通知ここここでは、内側flatMap
public runInstructionAndGetResult(): Observable<string> {
return this.runAnInstruction()
.flatMap((data) => {
console.info("flatMap of runAnInstruction:", data);
return this.getInstructionExecutionStatusInPolling()
.filter(data => data != "Polling")
.take(1)
.flatMap((data) => {
console.info("flatMap of getInstructionExecutionStatusInPolling:", data);
return this.getInstructionResult();
}).map((data) => {
console.info("Map of getInstructionResult:", data);
return data;
});
});
}
public runAnInstruction(): Observable<string> {
return Observable.of("StartRun");
}
public getInstructionResult(): Observable<string> {
return Observable.of("FinalResult");
}
public getInstructionExecutionStatusInPolling(): Observable<string> {
return Observable.interval(1000)
.concatMap(data => {
return this.getInstructionExecutionStatus();
});
}
public getInstructionExecutionStatus(): Observable<string> {
return Observable.of("Polling", "Terminate");
}
をplunk: https://plnkr.co/edit/c1cahMtVARQnLgnHWlEe?p=preview
主な問題は、私だけでは外側の内側の流れの「進化」について通知したい。
ここで、すべての内部フラットマップが完了したときにのみ、メインに「次の」イベントがあります。
通知を受け取る方法?ポーリング時などにメインストリームに明示的な値を出力するにはどうすればよいですか?
ありがとうございました。
あなたはより多くのことができますあなたが得たい結果を明示していますか?または、コンソールでどの出力を表示したいかを指定します。私はこれが何をすべきか理解していない。 – martin
@martin私はちょうど例えば "StartRun"データや "Terminate"データを使ってメインのサブスクライブをしたいと思っています。 –
もし私がこの正しいことを理解していれば、あなたは1つのデータムだけで始まるストリームから2つの次の呼び出しを受け取りたいと思うでしょう。その場合は、concat-operatorsを調べるか、 'this.runInstructionAndGetResult ).startWith( "StartRun")。subscribe ... ' – olsn