欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js只執(zhí)行1次的函數(shù)示例

 更新時間:2016年07月20日 11:38:39   投稿:daisy  
本文通過代碼示例給大家展示了如何讓javascript只執(zhí)行一次,如何實現(xiàn)這種功能呢?通過下面這段就可以輕松搞定了。

在我們?nèi)粘i_發(fā)的時候,經(jīng)常會碰到一種這樣的情況:想讓某個函數(shù)只執(zhí)行一次,特別是在一些循環(huán)或定時執(zhí)行的時候。

廢話不多說,直接上代碼:

function runOnce(fn, context) { //控制讓函數(shù)只觸發(fā)一次
  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

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

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只執(zhí)行一次的函數(shù)示例,有需要的可以參考。

相關(guān)文章

最新評論