繁体   English   中英

想运行一次 console.log

[英]Want to run console.log once

我在这里有一个函数,我的问题是:如何运行一次 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);
}

也许使用如下标志:

 var logged = false;

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

使用 Lodash 的_.once

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

'message' 将被记录一次。

你可以只使用一个标志:

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);
            }
setInterval(function() {
  if (!window.opener++) {
    console.log("print's once")
  }
  else {
    console.log("print's the remaining times")
  }
}, 3000);

opener是添加到全局可用 Window 对象的标志, window.opener++是增量运算符(使用后缀)。 它递增 window.opener 并递增之前返回值。 所以在第一个循环中, if (!window.opener++)计算结果为if (!null) (null 是一个假值,所以这是真的),并在第二次迭代if (!1) 增量运算符也可以用作前缀来返回增量的值。

https://jsfiddle.net/64atz4kq/

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Increment

多个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");
    }
}

为此做了一个功能。

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM