[キャンプを誘導する挑戦]Day 12-Publisher-SubscriberモードとJSの非同期
この文章はBoost Campの挑戦中に学んだことをまとめた.
リファレンス , リファレンス
説明する前にPub-Subモードはobserverモードと多くの類似点があった.
情報を伝え合うことが似ています.
傍観者モードとは、ウィキペディアを観察する際に、対象の状態の変化を観察する観察者が対象に登録し、状態が変化するたびに方法で通知するモードである.
簡単に言えば,オブジェクトが変化するたびに,傍観者にオブジェクトの情報を伝えると考えられる.
これとは異なり、Pub-Subモードは非同期メッセージパターンである.
pubのメッセージはobserverとは異なり、特定の受信者ではなく、メッセージを受信する必要があるsubに渡される.
すなわち,pubは互いに知らなくてもchannelにメッセージを送信することができ,subはchannelからメッセージを受信するだけでよい.
pub−subモードは、メッセージ送信者および受信者と直接通信するのではなく、両者の間のイベントバスを介して伝達される.
イベントバスは、すべての受信メッセージをフィルタし、subに再配布します.
そのため、お互いを知らなくても、コミュニケーションの環境を作ることができます.
さらに,傍観者モードはイベントを直接送信・受信するため同期方式を用い,pub−subは用いないため非同期方式を用いる.
要するに、コンテンツは結果を返さずに実行されるオブジェクトです.
ステータス:保留(代替):非同期処理が完了していない Fulfilled(履行済み): 処理完了 Rejected(失敗):エラー 3種類あります.
ex)
本当の場合はresolveを呼び出しthenで結果値を返します.
偽物の場合は拒否を呼び出し、catchで結果値を返します.
欠点はコードが長くなる可能性があることです->そうなると多くのコールバックがあります.
Promiseの欠点を解消するために作られたもので、待つことでpromise値が得られます
ただし、awaitを使用するにはasyncと宣言する必要があります.
ex)
リファレンス , リファレンス
Pub-Sub
説明する前にPub-Subモードはobserverモードと多くの類似点があった.
情報を伝え合うことが似ています.
傍観者モードとは、ウィキペディアを観察する際に、対象の状態の変化を観察する観察者が対象に登録し、状態が変化するたびに方法で通知するモードである.
簡単に言えば,オブジェクトが変化するたびに,傍観者にオブジェクトの情報を伝えると考えられる.
これとは異なり、Pub-Subモードは非同期メッセージパターンである.
pubのメッセージはobserverとは異なり、特定の受信者ではなく、メッセージを受信する必要があるsubに渡される.
すなわち,pubは互いに知らなくてもchannelにメッセージを送信することができ,subはchannelからメッセージを受信するだけでよい.
違いをよく知る
pub−subモードは、メッセージ送信者および受信者と直接通信するのではなく、両者の間のイベントバスを介して伝達される.
イベントバスは、すべての受信メッセージをフィルタし、subに再配布します.
そのため、お互いを知らなくても、コミュニケーションの環境を作ることができます.
さらに,傍観者モードはイベントを直接送信・受信するため同期方式を用い,pub−subは用いないため非同期方式を用いる.
JSで非同期
Promise
要するに、コンテンツは結果を返さずに実行されるオブジェクトです.
ステータス:
ex)
const condition = true;
const promise = new Promise((resolve, reject) => {
if (condition) {
resolve('resolved');
} else {
reject('rejected');
}
});
promise
.then((res) => {
console.log(res);
})
.catch((error) => {
console.error(error);
});
条件は承諾の価値を決定する.本当の場合はresolveを呼び出しthenで結果値を返します.
偽物の場合は拒否を呼び出し、catchで結果値を返します.
欠点はコードが長くなる可能性があることです->そうなると多くのコールバックがあります.
async/await
Promiseの欠点を解消するために作られたもので、待つことでpromise値が得られます
ただし、awaitを使用するにはasyncと宣言する必要があります.
ex)
(async () => {
const condition = true;
const promise = new Promise((resolve, reject) => {
if (condition) {
resolve('resolved');
} else {
reject('rejected');
}
});
try {
const result = await promise;
console.log(result);
} catch (err) {
console.error(err);
}
})();
承諾とは異なり,エラーを制御する機能はなく,単独でエラー処理を行う必要がある.Reference
この問題について([キャンプを誘導する挑戦]Day 12-Publisher-SubscriberモードとJSの非同期), 我々は、より多くの情報をここで見つけました https://velog.io/@soosungp33/부스트캠프-챌린지-Day12-Publisher-Subscriber-패턴과-JS의-비동기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol