在 Javascript 中从 setTimeout 内的函数获取返回的项目
2021-09-19
466
因此,我需要在 JavaScript 中对循环内的函数进行一点延迟,该函数每 500 毫秒调用一次:
function myFunc(num) {
return num++;
}
var theNum = 0;
while (theNum != 10) {
theNum = setTimeout(myFunc(theNum), 500);
}
console.log("All done");
但是,
All done
永远不会被记录下来。
1个回答
-
您正在立即调用该函数。您需要将函数 引用 传递给
setTimeout
。 -
并且由于该问题,您还创建了一个无限循环。
-
即使您更正了这个问题,“全部完成”仍会在任何超时完成之前首先记录。
因此,您需要重新考虑这种方法。将超时放在函数中,如果
theNum
小于10,则使用递增的数字再次调用该函数(
setTimeout
允许您在延迟后传递参数)。当计数达到 10 时记录“全部完成”。
function myFunc(num) {
return `Number: ${num}`;
}
function loop(theNum = 0) {
if (theNum < 10) {
console.log(myFunc(theNum));
setTimeout(loop, 500, ++theNum);
} else {
console.log("All done");
}
}
loop();
Andy
2021-09-19