プロジェクトへのキューの適用
2643 ワード
参照:個人ブログ原文リンク
今度はやっとデータの構造を使って、さもなくば私自身もすぐに忘れて、知識は使う前提の下でだけあって、やっと生きている知識で、やっと忘れにくいです.今回はプロジェクトでキューを使いましたが、もちろんここはショーのためではなく、記録、まとめ、開発中の心得を共有するためです.
タスク要件は、複数の弾窓の表示を制御することであり、優先度が必要であり、データの状態に応じて異なる弾窓を表示する必要がある.ハードコーディングの形式で直接制御する場合は、
需要:今A、B、Cの3つの弾窓があって、appのトップページで展示する必要があって、それらの展示の順序を制御する必要があって、展示の順序はA——>B——>Cです...など、弾窓ごとに1回しか展示されていません.A弾窓が展示されると、A弾窓をフォークしてから、B弾窓が展示されます.しかし、appのトップページにAが表示されている場合もありますが、ユーザーは操作せずにappパーソナルセンターに直接クリックし、再びトップページに入ると、B弾窓を表示する必要があります.
大まかな需要は上記のように、中にはいくつかの小さな細部がありますが、ここでは省略します.私たちは今、それを実現する必要があります.
上記は最も簡単なコードであり、この
キューはこの問題をよく解決することができて、大量の
キューはただ許可を担当するだけで、具体的なビジネスロジックは、それぞれのビジネス関数の中で、自分で実現すればいいので、私たちはここである程度のコード分離をしました.もちろんこれは簡単なコード実装にすぎず,具体的な詳細は調整し最適化することができる.
ここではキューを介してコードをデカップリングし,後期の拡張とメンテナンスにも有利である.以上がキューによって実現される論理であり,実際にはサブスクリプション・パブリケーション・モードによって実現され,複数のポップ・ウィンドウの表示を制御し,複数のコンポーネントを分割し,グローバルな状態を通過するとともに,サブスクリプションをパブリッシュすることによってポップ・ウィンドウの表示と順序を制御することもできる.皆さんも考えてみてください!!
プロジェクトで解決された問題:
呼び出し優先度の問題;実行順序を制御する.
1つのイベントで1 w個のリクエストを発行する必要があるのか、1 w個を一度に発行するのか、それとも他の方法で制御するのが合理的なのか.考えてみろ!!
今度はやっとデータの構造を使って、さもなくば私自身もすぐに忘れて、知識は使う前提の下でだけあって、やっと生きている知識で、やっと忘れにくいです.今回はプロジェクトでキューを使いましたが、もちろんここはショーのためではなく、記録、まとめ、開発中の心得を共有するためです.
タスク要件は、複数の弾窓の表示を制御することであり、優先度が必要であり、データの状態に応じて異なる弾窓を表示する必要がある.ハードコーディングの形式で直接制御する場合は、
if-else
を通じても実際にはこの問題を解決することができますが、これはコードの結合を招き、後期のメンテナンスと反復に不利になります.ポップアップウィンドウを増やす必要がある場合は、逆に一部の修正が必要ですが、キュー制御を通じて、各ポップアップウィンドウは関数であり、関数呼び出しの結果に基づいて保証されるかどうか、具体的な考え方を示しましょう.具体的な考え方とコード
需要:今A、B、Cの3つの弾窓があって、appのトップページで展示する必要があって、それらの展示の順序を制御する必要があって、展示の順序はA——>B——>Cです...など、弾窓ごとに1回しか展示されていません.A弾窓が展示されると、A弾窓をフォークしてから、B弾窓が展示されます.しかし、appのトップページにAが表示されている場合もありますが、ユーザーは操作せずにappパーソナルセンターに直接クリックし、再びトップページに入ると、B弾窓を表示する必要があります.
大まかな需要は上記のように、中にはいくつかの小さな細部がありますが、ここでは省略します.私たちは今、それを実現する必要があります.
let APopShow = getStorage('APopShow')
let BPopShow = getStorage('BPopShow')
let CPopShow = getStorage('CPopShow')
if(!APopShow) {
AShow = true
setStorage(!AShow)
return;
}else if(!BPopShow) {
BShow = true
setStorage(!BShow)
return;
}else if(!CPopShow){
CShow = true
setStorage(!CShow)
return;
}
上記は最も簡単なコードであり、この
は非常に簡潔であり、if - else if - else if ....
は一連のif-else
によって展示の順序を制御する.ここでは、複数の弾窓の表示を制御するために、共通の弾窓アセンブリとしてパッケージされます.キュー最適化の使用
キューはこの問題をよく解決することができて、大量の
if-else
を避けることができて、キューは先進的に先に出て、キュー制御関数を通じて呼び出して、関数の中で具体的な業務ロジックです.ここではキューの知識を使っていますが、完全にキューをコピーしているわけではありません!!let Queue = [];
let AShow = false;
let BShow = false;
let CShow = false;
function pushQueue(fnc) {
if(fnc instanceof Function){
Queue.push(fnc);
}
}
function runQueue() {
for(let fn item Queue) {
fn();
}
}
function AFunc() {};
function BFunc() {if(AShow) return false;};
function CFunc() {if(BShow) return false;};
pushQueue(AFunc);
pushQueue(BFunc);
pushQueue(CFunc);
runQueue();
キューはただ許可を担当するだけで、具体的なビジネスロジックは、それぞれのビジネス関数の中で、自分で実現すればいいので、私たちはここである程度のコード分離をしました.もちろんこれは簡単なコード実装にすぎず,具体的な詳細は調整し最適化することができる.
ここではキューを介してコードをデカップリングし,後期の拡張とメンテナンスにも有利である.以上がキューによって実現される論理であり,実際にはサブスクリプション・パブリケーション・モードによって実現され,複数のポップ・ウィンドウの表示を制御し,複数のコンポーネントを分割し,グローバルな状態を通過するとともに,サブスクリプションをパブリッシュすることによってポップ・ウィンドウの表示と順序を制御することもできる.皆さんも考えてみてください!!
解決できる問題
プロジェクトで解決された問題:
1. , ;
2. ;
3. , ;
4. ;
。。。
呼び出し優先度の問題;実行順序を制御する.
拡張
1つのイベントで1 w個のリクエストを発行する必要があるのか、1 w個を一度に発行するのか、それとも他の方法で制御するのが合理的なのか.考えてみろ!!