Jquery 为什么setTimeout函数似乎不能在无限循环中工作?

Jquery 为什么setTimeout函数似乎不能在无限循环中工作?,jquery,Jquery,setTimeout函数似乎无法在无限循环中工作: 在这里,我使用了setTimeout函数,但它返回的值没有任何期望的延迟 资料来源如下: var Slider = new function () { var that = this; for (var i = 1; i < 6; i++) { var a = myFunction(i); alert(a); if (i == 5) { i = 0;

setTimeout函数似乎无法在无限循环中工作: 在这里,我使用了setTimeout函数,但它返回的值没有任何期望的延迟

资料来源如下:

var Slider = new function () {
    var that = this;
    for (var i = 1; i < 6; i++) {
        var a = myFunction(i);
        alert(a);
        if (i == 5) {
            i = 0;
        }
    }
};
 function myFunction(n) {
    setTimeout(function () {
        return n;
    }, 3000);
};
var Slider=新函数(){
var=这个;
对于(变量i=1;i<6;i++){
var a=myFunction(i);
警报(a);
如果(i==5){
i=0;
}
}
};
函数myFunction(n){
setTimeout(函数(){
返回n;
}, 3000);
};
如果(-)是1秒,则函数myFunction的输出返回正确

    --- output
    --- output
    --- output
    --- output
    --- output

var Slider = new function () {
    var that = this;
    for (var i = 1; i < 6; i++) {
        var a = myFunction(i);

        if (i == 5) {
            i = 0;
        }
    }
};
function myFunction(n) {
    setTimeout(function () {
        alert(n);
    }, 3000);
};
——输出
---输出
---输出
---输出
---输出
变量滑块=新函数(){
var=这个;
对于(变量i=1;i<6;i++){
var a=myFunction(i);
如果(i==5){
i=0;
}
}
};
函数myFunction(n){
setTimeout(函数(){
警报(n);
}, 3000);
};
如果使用此代码,则可以清除

    --- output
    ------ output
    --------- output
    ------------ output
    --------------- output

    var Slider = new function () {
    var that = this;
    for (var i = 1; i < 6; i++) {
        var a = myFunction(i);

        //if (i == 5) {
        //    i = 0;
        //}
    }
};
function myFunction(n) {
    setTimeout(function () {
        alert(n);
    }, (n*3000));
};
——输出
------输出
---------输出
------------输出
---------------输出
变量滑块=新函数(){
var=这个;
对于(变量i=1;i<6;i++){
var a=myFunction(i);
//如果(i==5){
//i=0;
//}
}
};
函数myFunction(n){
setTimeout(函数(){
警报(n);
}(n*3000));
};

我停止无限循环,它也适用于无限循环。

首先,您的
return n
调用将值返回到
setTimeout
回调
myFunction
没有返回任何内容。因此,
a
中的值可以是任何值


其次,
setTimeout
在给定的超时后执行一段代码,但不会阻止当前的执行。这意味着您的
警报(a)
将在您调用
myFunction
后立即被调用,然后在3秒钟后,将执行
setTimeout
回调。

似乎您有一个无限循环开始。那么,如何使用
alert()
进行调试?
myFunction()
将始终立即返回,没有返回值。稍后,内部函数将返回
n
,但该值将被忽略,并且与
滑块中的任何代码无关
myFunction
不返回任何值<代码>值未定义。我不清楚你想做什么。你在下面接受的答案甚至都无法运行,更不用说工作了。你接受它的理由是什么?现在我明白你为什么接受了这么糟糕的答案。你们都在同一家公司工作!我现在看到你的是我一直在寻找的第三个连续向上投票帐户(与Kamruzzaman和Rezoyanul Islam Reza合并)。我想现在一定要给IQRASYS发邮件。这完全是不专业的行为。