如何每隔几秒运行一次具有返回值的函数?

时间:2014-08-11 02:35:06

标签: javascript

如何每隔几秒运行一次,而不会阻止页面的其余部分加载。

function Create() {
    var SomeArray = [];
    for ( var i=0; i<=1 ; i ++) {

    SomeArray[i] = (Math.random() * 10) + 1;
    //alert(arr[0]);

    }
   return SomeArray;
}
var x = Create();
alert(x[0] + x[1]);

我正在尝试这个var timer = setInterval(Create,5000);它可以防止加载页面的其余部分。  我希望每隔几秒就能得到新的值

2 个答案:

答案 0 :(得分:1)

一个基本的例子是:

var counter = 0;
var timerRef;
var increment = function() {
    counter += 1;
    console.log(counter);
    timerRef = setTimeout(increment, 1000);
}

setTimeout(increment, 1000);

// clearTimeout(timerRef);

请避免document.write参考screencast了解更多详情。

答案 1 :(得分:0)

setInterval()可以配置为在您请求的任何时间间隔重复调用您指定的任何函数。但是,您无法从该函数检索返回值。相反,您需要在传递给setInterval()的回调中处理结果,或者调用其他函数并传递在回调中生成的结果。这就是异步函数在JavaScript中的工作方式。我在下面提供了几个您的选项示例:

如果你只想每5秒生成1到10(含)之间的两个随机十进制值,你可以这样做:

var interval = setInterval(function() {
    var rand1 = (Math.random() * 10) + 1;
    var rand2 = (Math.random() * 10) + 1;

    // now insert code here to do something with the two random numbers

}, 5000);

如果你想随机值是整数(这是更常见的),那么你会这样做:

var interval = setInterval(function() {
    var rand1 = Math.floor(Math.random() * 10) + 1;
    var rand2 = Math.floor(Math.random() * 10) + 1;

    // now insert code here to do something with the two random numbers

}, 5000);

如果你想调用一个函数并将这两个随机数传递给它,你可以这样做:

function processRandoms(r1, r2) {
    // code here to do something with the two random numbers
}

var interval = setInterval(function() {
    var rand1 = Math.floor(Math.random() * 10) + 1;
    var rand2 = Math.floor(Math.random() * 10) + 1;
    processRandoms(rand1, rand2);
}, 5000);

然后您可以随时停止重复间隔:

clearInterval(interval);