PushシステムとPullシステムにおけるProducerの役割を考察する
8785 ワード
戻り値の個数に基づいてオブジェクトを分類する
SINGLEMULTIPLEPullFunctionIteratorPushPromiseObservable
ProducerとConsumerの違い
PRODUCERCONSUMERPullPassive: produces data when requested.Active: decides when data is requested.PushActive: produces data at its own pace.Passive: reacts to received data.
Producerはデータの生産主体であり,Consumerはデータの使用主体である.我々がよく使う関数の観点から,呼び出し関数の呼び出し元はConsumer,呼び出し関数の呼び出し元はProducerといえる.
我々が通常使用しているPullシステムでは、Consumerはいつデータを受信するかを決定することができ、Producerは要求を受動的に受信し、データを生産するだけである.PromiseとObservableを用いたプッシュシステムでは,生産者は自分のニーズに応じてデータを生産し伝達することができ,Consumerはこれらのデータにしか反応しない.
理論的には受け入れられるが、具体的なコードはどのようなものなのだろうか.これはPullシステムにおける機能とPushシステムにおける観測可能性についての説明である.
まずFunctionを考慮すると,Consumerはいつデータを受信するかを決定することができ,Functionは要求されたデータしか生成できない.この部分は自然です.
しかしPushシステムでは観測不可能な理論は正しく応用されていない.コードの例を次に示します.
const observable = new Observable(function subscribe(subscriber) {
subscriber.next(1);
})
observable.subscribe(x => console.log(x));
1つの値が1の観察可能な値を受信し、コンソールに出力するコード.私はこの部分にいます.でもこれはすぐに、
1.生産者と消費者の主体を明確にする
2.subscribe()メソッドの役割をAPI Documentationから再度理解する.
解決しました.
Pushシステムにおける生産者と消費者の主体を観測可能
さっきの例をもう一つ持ってきます.
const observable = new Observable(function subscribe(subscriber) {
subscriber.next(1);
})
observable.subscribe(x => console.log(x));
この例では、私が意図的にコールバックをsubscribe
と命名し、観察可能なジェネレータに転送したことを示します.私のsubscribe
関数は生産データのProducerです.そして、observable.subscribe(x => console.log(x))
によって伝達されるx => console.log(x)
コールバック関数は、データを書き込むConsumerである.subscribe()メソッドの役割
観測可能な関数に渡される
subscribe
コールバック関数はProducerだとさっき言いました.observable.subscribe()
も方法subscribe
を呼び出す.はい、これは同じです.正式な書類においても、実践的な目的のために、2つは同一であると考えられる.すなわち、
observable.subscribe()
を実行することは、Observableに伝達されるコールバック関数を実行することと一脈相承であり、これにより、モニタを介して直接実行してConsumerに自分の生産したデータを伝達する自然なリポジトリが形成される.https://rxjs.dev/api/index/class/Observable文書においても、
subscribe()
メソッドは、Observableを呼び出す実行を記述する.くさびを打つ
観測可能なプッシュシステムでは,誰が生産者と消費者であるかを知ることで,我々の疑問をうまく解決した.しかし、「lazy computing」という部分は受動的な感じがまだ消えていない.
だから、
lazy = 수동
という命題は急いで一般化された間違いだと改めて注意したいと思います.怠け者ですが、自発的な可能性が高いです.最後に、いくつかの余韻を残して終了する例を作成します.
function passiveProducer() {
setTimeout(() => {
return 'seop'; // X. Already in Task Queue
}, 5000);
const producedValueJustPassively = 'seop';
return producedValueJustPassively;
}
const value = passiveProducer();
// -------------------------------------------------------------
const lazyButActiveObservable = new Observable((subscriber) => {
setTimeout(() => {
subscriber.next('seop');
}, 5000);
})
lazyButActiveObservable.subscribe(x => console.log(`${x} value is absolutely emitted by Producer's own pace`))
P.S.活動サイクルから担当の観察可能な...Reference
この問題について(PushシステムとPullシステムにおけるProducerの役割を考察する), 我々は、より多くの情報をここで見つけました https://velog.io/@seop/Push-시스템과-Pull-시스템에서의-Producer-역할에-관한-고찰テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol