Heim > Web-Frontend > js-Tutorial > Wie zähle ich die Anzahl der Funktionsausführungen in Javascript? (ausführliche Erklärung)

Wie zähle ich die Anzahl der Funktionsausführungen in Javascript? (ausführliche Erklärung)

不言
Freigeben: 2018-10-27 14:14:18
nach vorne
4608 Leute haben es durchsucht

In diesem Artikel geht es darum, wie man die Anzahl der Funktionsausführungen in JavaScript zählt. (Ausführliche Erklärung) hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.

1. Zählen Sie die Anzahl der Funktionsausführungen

Die herkömmliche Methode kann darin bestehen, die Ausgabe von console.log zu verwenden, um visuell zu berechnen, wie viele Ausgaben es gibt

Aber in Chrome gibt es eine integrierte console.count-Methode, die zählen kann, wie oft eine Zeichenfolge ausgegeben wird. Wir können dies verwenden, um indirekt die Anzahl der Ausführungen der Funktion zu zählen

function someFunction() {
 console.count('some 已经执行');
}
function otherFunction() {
 console.count('other 已经执行');
}
someFunction(); // some 已经执行: 1
someFunction(); // some 已经执行: 2
otherFunction(); // other 已经执行: 1
console.count(); // default: 1
console.count(); // default: 2
Nach dem Login kopieren

Ohne Parameter ist dies der Standardwert, andernfalls wird die Anzahl der Ausführungen der Zeichenfolge ausgegeben, was sehr praktisch zu beobachten ist

Wenn Sie zusätzlich zur Ausgabe der Anzahl auch eine reine Anzahl erhalten möchten, können Sie die Funktion natürlich mit einem Dekorator umschließen und das Objekt verwenden, um die Anzahl der Aufrufe intern zu speichern

var getFunCallTimes = (function() {
 
 // 装饰器,在当前函数执行前先执行另一个函数
 function decoratorBefore(fn, beforeFn) {
 return function() {
 var ret = beforeFn.apply(this, arguments);
 // 在前一个函数中判断,不需要执行当前函数
 if (ret !== false) {
 fn.apply(this, arguments);
 }
 };
 }
 
 // 执行次数
 var funTimes = {};
 
 // 给fun添加装饰器,fun执行前将进行计数累加
 return function(fun, funName) {
 // 存储的key值
 funName = funName || fun;
 
 // 不重复绑定,有则返回
 if (funTimes[funName]) {
 return funTimes[funName];
 }
 
 // 绑定
 funTimes[funName] = decoratorBefore(fun, function() {
 // 计数累加
 funTimes[funName].callTimes++;
 console.log('count', funTimes[funName].callTimes);
 });
 
 // 定义函数的值为计数值(初始化)
 funTimes[funName].callTimes = 0;
 return funTimes[funName];
 }
})();

function someFunction() {
 
}
function otherFunction() {
 
}
someFunction = getFunCallTimes(someFunction, 'someFunction');
someFunction(); // count 1
someFunction(); // count 2
someFunction(); // count 3
someFunction(); // count 4
console.log(someFunction.callTimes); // 4
otherFunction = getFunCallTimes(otherFunction);
otherFunction(); // count 1
console.log(otherFunction.callTimes); // 1
otherFunction(); // count 2
console.log(otherFunction.callTimes); // 2
Nach dem Login kopieren

So steuern Sie die Anzahl der Funktionsaufrufe

Sie können auch Abschlüsse verwenden, um die Anzahl der Ausführungen einer Funktion zu steuern

function someFunction() {
 console.log(1);
}
function otherFunction() {
 console.log(2);
}
function setFunCallMaxTimes(fun, times, nextFun) {
 return function() {
 if (times-- > 0) {
 // 执行函数
 return fun.apply(this, arguments);
 } else if (nextFun && typeof nextFun === 'function') {
 // 执行下一个函数
 return nextFun.apply(this, arguments);
 }
 };
}
var fun = setFunCallMaxTimes(someFunction, 3, otherFunction);
fun(); // 1
fun(); // 1
fun(); // 1
fun(); // 2
fun(); // 2
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie zähle ich die Anzahl der Funktionsausführungen in Javascript? (ausführliche Erklärung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage