如何使其他功能运行

时间:2014-05-07 23:03:20

标签: javascript function backbone.js procedural-programming

var time = 0;
function time(){
    setInterval(time++, 500);
    if (time > 1800){
        time = 0;
    }
    setInterval(alert("The time is" + time), 500);
}

我试图每15分钟创建一个基于半秒的计时系统。 不幸的是,我无法测试,因为第二个setInterval没有运行。

我认为这是因为代码不会继续运行,因为setInterval会继续循环。

我认为狭隘的问题是如何让所有这三个同时运行。

更广泛的是一个程序对象如何定位?

3 个答案:

答案 0 :(得分:1)

您的代码存在很多问题....

首先,你有一个名为time的变量,以及一个名为time的函数......这样就不会给你造成任何麻烦。

其次,setInterval的第一个参数必须是一个函数(或一个字符串,但我甚至不愿提及它,因为它是一个坏主意,我不想鼓励它) 。

第三,除非你以后在某个地方实际调用time()(你没有在你的代码中显示它),否则setInterval调用都不会被执行。

以下是您可以重新编写代码的方法:

var _time = 0;
function time() {
    _time++;
    if(_time > 1800) _time = 0;    
    setTimeout(function() { alert('The time is ' + _time); }, 500);
}
setInterval(time, 900000);  // 900000 ms = 15 minutes

答案 1 :(得分:0)

setInterval的第一个参数必须是一个函数!像这样:

var time = 0;
function time(){
    setInterval(time++, 500);
    if (time > 1800){
        time = 0;
    }
    setInterval(function() { alert("The time is" + time)}, 500);
}

您遇到的第二个问题是,您将time分配给零,然后将其分配给一个函数,然后递增它(将其设置为NaN),然后将其与1800(将失败)进行比较。我想你想要两个变量:timeCountertimeFunction

var timeCounter = 0;
function timeFunction(){
    timeCounter++;
    if (timeCounter > 1800){
        timeCounter = 0;
    }
    alert("The time is" + timeCounter);
    setInterval(timeFunction, 500);
}

但是如果你运行这个功能,你会非常抱歉,因为它会一直弹出警报,直到你杀死窗口(弹出窗口之间的半秒间隔)。

答案 2 :(得分:0)

首先,  时间是变量,时间是函数==>这是错误的。   ===>重新命名你的功能。

其次

setInterval(first,seconde)应该有一个函数作为第一个参数。

var time = 0;
function timefn(){
    setInterval(function() { time++}, 500);
    if (time > 1800){
        time = 0;
    }
    setInterval(function() { alert("The time is" + time)}, 500);
}

如果您想通过设置函数名称来执行代码:

 function time(){
        setInterval(function() { time.time++}, 500);
        if (time.time > 1800){
            time.time = 0;
        }
        setInterval(function() { alert("The time is" + time.time)}, 500);
    }
    time.time = 0;

因为功能可以用作对象>因此,我们向time对象(函数)添加新属性,我们也将其称为time