想要运行console.log一次

时间:2014-02-24 14:02:42

标签: javascript

我在这里有一个功能,我的问题是:如何运行console.log一次,我调用的函数一直在运行?

function zetTemperatuur() {

    var handmatigeTemp = document.getElementById("gewenstetemperatuur").value;

    var myInterval = setInterval(function () {
        if (handmatigeTemp < temperatuur) {
            console.log("De motor van de wijnkoeler begint te draaien en zal geleidelijk aan dalen naar de gewenste temperatuur.");

            trekAf();
        } else if (handmatigeTemp == temperatuur) {
            console.log("Uw Wijnkoeler is op de juiste temperatuur, namelijk " + temperatuur + ". De motor zal nu uitschakelen om energie te besparen.");
            clearInterval(myInterval);
        } else {
            clearInterval(myInterval);
        }
    }, 3000);
}

6 个答案:

答案 0 :(得分:3)

也许可以使用像这样的标志:

 var logged = false;

 /*In your function*/
 if(!logged)
 {
  console.log(something);
  logged = true;
 }

答案 1 :(得分:2)

你可以只使用一个标志:

function zetTemperatuur() {

                var handmatigeTemp = document.getElementById("gewenstetemperatuur").value;
                var flag = false;

                var myInterval = setInterval(function() {
                    if (handmatigeTemp < temperatuur) {
                        if (flag == false) {
                          flag = true;
                          console.log("De motor van de wijnkoeler begint te draaien en zal geleidelijk aan dalen naar de gewenste temperatuur.");
                        }

                        trekAf();
                    }
                    else if (handmatigeTemp == temperatuur) {
                        console.log("Uw Wijnkoeler is op de juiste temperatuur, namelijk " + temperatuur + ". De motor zal nu uitschakelen om energie te besparen.");
                        clearInterval(myInterval);
                    }

                    else {
                        clearInterval(myInterval);
                    }
                      }, 3000);
            }

修改

更短的版本:

function zetTemperatuur() {

                var handmatigeTemp = document.getElementById("gewenstetemperatuur").value;
                var flag = false;

                var myInterval = setInterval(function() {
                    if (handmatigeTemp < temperatuur) {
                        (!flag) && (flag = true);
                        console.log("De motor van de wijnkoeler begint te draaien en zal geleidelijk aan dalen naar de gewenste temperatuur.");

                        trekAf();
                    }
                    else if (handmatigeTemp == temperatuur) {
                        console.log("Uw Wijnkoeler is op de juiste temperatuur, namelijk " + temperatuur + ". De motor zal nu uitschakelen om energie te besparen.");
                        clearInterval(myInterval);
                    }

                    else {
                        clearInterval(myInterval);
                    }
                      }, 3000);
            }

答案 2 :(得分:1)

使用_.once

function log() {
  console.log('message')
}
var _log = _.once(log);
_log();
_log();

'message'将被记录一次。

答案 3 :(得分:0)

多个console.logs的解决方案

var flag = array();
var logger = function(id, message) {
    if(!flag[id]) {
        console.log(message);
        flag[id] = true;
    }
}
var yourFunction = function(something) {
    // your code here
    if(something) {
        logger(1, "german german deutch");
    }
    else {
        logger(2, "another german");
    }
}

答案 4 :(得分:0)

为此做了一个功能。

console.logOnce = function(msg) {
  window.__loggedFunctions = window.__loggedFunctions || [];
  var caller = arguments.callee.caller.toString();
  for (var i = 0; i < __loggedFunctions.length; i++ ) {
    if (caller == __loggedFunctions[i]) return;
  }
  window.logOnce = arguments;

  for (var i = 0; i < arguments.length; i++) {
    console.log(arguments[i]);  
  }

  __loggedFunctions.push(caller);
}

答案 5 :(得分:0)