プロジェクトへのキューの適用


参照:個人ブログ原文リンク
今度はやっとデータの構造を使って、さもなくば私自身もすぐに忘れて、知識は使う前提の下でだけあって、やっと生きている知識で、やっと忘れにくいです.今回はプロジェクトでキューを使いましたが、もちろんここはショーのためではなく、記録、まとめ、開発中の心得を共有するためです.
タスク要件は、複数の弾窓の表示を制御することであり、優先度が必要であり、データの状態に応じて異なる弾窓を表示する必要がある.ハードコーディングの形式で直接制御する場合は、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個を一度に発行するのか、それとも他の方法で制御するのが合理的なのか.考えてみろ!!