js只執行1次的函數示例
來源:易賢網 閱讀:1268 次 日期:2016-07-29 16:48:37
溫馨提示:易賢網小編為您整理了“js只執行1次的函數示例”,方便廣大網友查閱!

在我們日常開發的時候,經常會碰到一種這樣的情況:想讓某個函數只執行一次,特別是在一些循環或定時執行的時候。

直接上代碼:

function runOnce(fn, context) { //控制讓函數只觸發一次

  return function () {

    try {

      fn.apply(context || this, arguments);

    }

    catch (e) {

      console.error(e);//一般可以注釋掉這行

    }

    finally {

      fn = null;

    }

  }

}

// Usage 1:

var a = 0;

var canOnlyFireOnce = runOnce(function () {

  a++;

  console.log(a);

});

canOnlyFireOnce(); //1

canOnlyFireOnce(); // nothing

canOnlyFireOnce(); // nothing

// Usage 2:

var name = "張三";

var canOnlyFireOnce = runOnce(function () {

  console.log("你好" + this.name);

});

canOnlyFireOnce(); //你好張三

canOnlyFireOnce(); // nothing

// Usage 3:

var obj = {name: "天涯孤雁", age: 24};

var canOnlyFireOnce = runOnce(function () {

  console.log("你好" + this.name);

}, obj);

canOnlyFireOnce(); //你好天涯孤雁

canOnlyFireOnce(); // nothing

因為返回函數執行一次后,fn = null將其設置未null,所以后面就不會執行了。再貼一個網上別人分享的代碼,道理一樣的:

function once(fn, context) { 

  var result;

  return function() { 

    if(fn) {

      result = fn.apply(context || this, arguments);

      fn = null;

    }

    return result;

  };

}

// Usage

var canOnlyFireOnce = once(function() {

  console.log('Fired!');

});

canOnlyFireOnce(); // "Fired!"

canOnlyFireOnce(); // nothing

以上就是為大家整理讓javascript只執行一次的函數示例,有需要的可以參考。

更多信息請查看網絡編程
易賢網手機網站地址:js只執行1次的函數示例
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看