国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

計時器統一管理

darkerXi / 2828人閱讀

摘要:計時器統一管理,寫法該計時器標識符回調函數時間間隔,單位為秒回調函數參數初始化狀態遍歷計時器隊列計算間隔時間參數獲取插入隊列清除計時器刪除隊列項清除隊列調用清除清除所有計時器用實現,可以改用鏈接

計時器統一管理,es6 class寫法

let PRIVSTATE;//key for setInterval
class Timer  {
  /*
   * key construct
   * {
   *   key:String//該計時器標識符
   *   call:fn,//回調函數
   *   delay:Num,//時間間隔,單位為秒
   *   params:[]//回調函數參數
   * }
   */
  static keys = [];
  //初始化狀態interval-key
  // static PRIVSTATE = null;
  static init() {
      if (!PRIVSTATE && this.keys.length) {
        PRIVSTATE = window.setInterval(() => {
          this.keys.map(item => {//遍歷計時器隊列
            if (item) {
              let {
                call,
                delay,
                params
              } = item;
              delay = delay ? parseInt(delay) : 1;
              if(!item.delay_count){
                item.delay_count = delay;
              }
              item.delay_count--;
              if (item.delay_count <= 0) {//計算間隔時間
                item.delay_count = delay;
                  if (params && params.length) {
                    call && call(...params);
                  } else {
                    call && call();
                  }
              }
            }
          })
        }, 1000);
      }
    };
    static setIn(...rest) {
      let callObj = {};
      for(var o of rest){//參數獲取
        switch (Object.prototype.toString.call(o)) {
          case "[object Array]":
            callObj.params = o;
            break;
          case "[object String]":
            callObj.key = o;
            break;
          case "[object Number]":
            callObj.delay = o;
            break;
          case "[object Function]":
            callObj.call = o;
            break;
          default:
            console.log("noValide param")
            break;
        }
      }
      if(callObj.call){
        if(!callObj.key){
          console.log(callObj.call.name);
          callObj.key = callObj.call.name;
        }
        let itemIn = this.keys.findIndex(item => item.key && item.key === callObj.key);
        if (itemIn >= 0) {//插入隊列
          this.keys[itemIn] = callObj;
        } else {
          this.keys.push(callObj);
        }
        this.init();
      }

    };
    static cleanIn(key) {//String//清除計時器
      if (key) {
        let itemIn = this.keys.findIndex(item => item.key && item.key === key);
        if (itemIn >= 0) {
          this.keys.splice(itemIn, 1);//刪除隊列項
        } else {
          console.error("no Key");
        }
      }else{
        //TODO clean All
        this.keys = [];//清除隊列
      }
      if (!this.keys.length && PRIVSTATE) {
        window.clearInterval(PRIVSTATE);
        PRIVSTATE = null;
      }
    }
};
export default Timer;

調用

import timer from "./timer.js"
timer.setIn(handleFn,2,"timeSet")
timer.cleanIn("timeSet")//清除timeSet
timer.cleanIn()//清除所有計時器

用setinterval實現,可以改用requestAnimationFrame
git鏈接https://github.com/xiaolu0018...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110311.html

相關文章

  • 時器在大型web項目中的應用和實現

    摘要:在軟件項目中,定時器也被應用到了各方各面,本文將從項目入手,講述定時器,本文的例子都以為例。定時器總類定時器有兩種對應重復任務和一次性任務。 在大規模分布式系統中,每個業務都可能是集群,每個業務機都會產生定時任務,不同的業務會有不同的任務管理需求,統一的任務調度和管理變得非常有必要。 定時如何準確,大量的定時被同時觸發怎么辦? 定時結束的時候,怎么通知業務機去處理呢? 某臺業務機下線...

    douzifly 評論0 收藏0
  • 時器在大型web項目中的應用和實現

    摘要:在軟件項目中,定時器也被應用到了各方各面,本文將從項目入手,講述定時器,本文的例子都以為例。定時器總類定時器有兩種對應重復任務和一次性任務。 在大規模分布式系統中,每個業務都可能是集群,每個業務機都會產生定時任務,不同的業務會有不同的任務管理需求,統一的任務調度和管理變得非常有必要。 定時如何準確,大量的定時被同時觸發怎么辦? 定時結束的時候,怎么通知業務機去處理呢? 某臺業務機下線...

    whataa 評論0 收藏0
  • 論性能測試

    摘要:吞吐量一般結合業務需求而定服務器資源占用占用率內存使用率命中率篇是一種預測系統行為和性能的負載測試工具。負載測試與壓力測試都是性能測試。通過平臺接口可進行合理的性能測試。有利于測試人員及時定位問題。 Part 1:性能測試 性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。 A. 類別 性能測試包括負載測試、壓力測試、基準測試等。 i. 負...

    qpal 評論0 收藏0
  • [譯]新的高性能計算框架——KernelHive

    摘要:追蹤正在進行的計算的狀態。為了知道作業的進度,通過監聽端口來接受二進制文件發來的信息。子系統監聽的子系統包括多種預編譯二進制文件。這些二進制文件被分配給對應的在應用層定義好的計算模版。 KernelHive: a new workflow-based framework for multilevel high performance computing using clusters a...

    2shou 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<