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);
};
答案 0 :(得分:1)
首先,您的return n
调用将值返回到setTimeout
回调。 myFunction
并未返回任何内容。因此,您在a
中获得的价值可以是任何东西。
其次,setTimeout
在给定的超时后执行一段代码,但不会阻止当前的执行。这意味着您在致电alert(a)
后会立即致电myFunction
,然后在3秒后,将会执行setTimeout
回调。
答案 1 :(得分:-1)
如果( - )是一个secont然后从函数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);
};
如果您使用此代码,则可以清除
--- 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));
};
我停止无限循环,它也适用于无限循环。