Javascript 设置动作下的间隔变化速度

Javascript 设置动作下的间隔变化速度,javascript,performance,time,settimeout,setinterval,Javascript,Performance,Time,Settimeout,Setinterval,我不知道如何在setInterval中的函数工作时改变速度 代码: var timeout, count = 0, speed = 5000; $('#stage').mousedown(function() { timeout = setInterval(function() { speed = parseInt(speed / 1.3); // HERE I want

我不知道如何在setInterval中的函数工作时改变速度

代码:

var timeout, count = 0, speed = 5000;

                  $('#stage').mousedown(function() {
                    timeout = setInterval(function() {
                        speed = parseInt(speed / 1.3); // HERE I want change speed
                        create(speed); // Some Function
                    }, speed); // This speed, I don't know how to change
                });

                $('#stage').mouseup(function() {
                    count = 0;
                    clearInterval(timeout);
                });
此项工作但速度超出功能范围为常数(5000)


非常感谢你的帮助

必须使用命名函数才能将其传递到新的setTimeout函数中

var speed = 5000;
var timer;

$('#stage').mousedown(function() {
    timer = setTimeout(handleTick, speed);
});

$('#stage').mouseup(function() {
    clearTimeout(timer);    
});

var handleTick = function () {
    speed = parseInt(speed / 1.3);
    timer = setTimeout(handleTick, speed);
};

必须使用命名函数才能将其传递到新的setTimeout函数中

var speed = 5000;
var timer;

$('#stage').mousedown(function() {
    timer = setTimeout(handleTick, speed);
});

$('#stage').mouseup(function() {
    clearTimeout(timer);    
});

var handleTick = function () {
    speed = parseInt(speed / 1.3);
    timer = setTimeout(handleTick, speed);
};

据我所知,在调用
setInterval
后,您无法更改延迟。但是,您可以以递归方式调用
setTimeout

var speed = 5000;

function doSomething() {
    console.log(speed); // prints from 5000 to 1000
    speed -= 1000;
};

setTimeout(function () {
    doSomething(); // changes the global "speed" var internally
    speed && setTimeout(arguments.callee, speed);
}, speed);

据我所知,在调用
setInterval
后,您无法更改延迟。但是,您可以以递归方式调用
setTimeout

var speed = 5000;

function doSomething() {
    console.log(speed); // prints from 5000 to 1000
    speed -= 1000;
};

setTimeout(function () {
    doSomething(); // changes the global "speed" var internally
    speed && setTimeout(arguments.callee, speed);
}, speed);

请改用
setTimeout
循环。可能重复的请改用
setTimeout
循环。可能重复的
参数。不推荐使用被调用方。最好使用命名函数。
参数。被调用方
不推荐使用。最好使用命名函数。这永远不会停止!当您在handleTick函数中调用setTimeout时,您需要再次设置计时器,否则clearTimeout将不起作用。这将永远不会停止!在handleTick函数中调用setTimeout时,需要再次设置计时器,否则clearTimeout将不起作用。