成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

計時器統(tǒng)一管理

darkerXi / 2836人閱讀

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

計時器統(tǒng)一管理,es6 class寫法

let PRIVSTATE;//key for setInterval
class Timer  {
  /*
   * key construct
   * {
   *   key:String//該計時器標識符
   *   call:fn,//回調(diào)函數(shù)
   *   delay:Num,//時間間隔,單位為秒
   *   params:[]//回調(diào)函數(shù)參數(shù)
   * }
   */
  static keys = [];
  //初始化狀態(tài)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){//參數(shù)獲取
        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;

調(diào)用

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

用setinterval實現(xiàn),可以改用requestAnimationFrame
git鏈接https://github.com/xiaolu0018...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110311.html

相關(guān)文章

  • 時器在大型web項目中的應(yīng)用和實現(xiàn)

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

    douzifly 評論0 收藏0
  • 時器在大型web項目中的應(yīng)用和實現(xiàn)

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

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

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

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

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

    2shou 評論0 收藏0

發(fā)表評論

0條評論

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