为什么我需要在 JavaScript 中传递匿名函数"setTimeout"?



我试图用JQuery和JavaScript为按钮动画添加超时。起初我尝试了这个代码:

setTimeout(playBtnSoundAndAnimate(currentSequence[last]), 2000);

这并没有增加任何超时。然而,当我在下面写代码时,超时有效:

setTimeout(function () {
playBtnSoundAndAnimate(currentSequence[last]), 2000;}); 

为什么我需要通过";playBtnSoundAnAnimate";在匿名函数中,setTimeout是否生效?

如果重要的话;播放BtnSoundAndAnimate";功能看起来像:

function playBtnSoundAndAnimate(activatedBtn) {
$("#" + activatedBtn).addClass("pressed");
setTimeout(function () {
$(".btn").removeClass("pressed");
}, 50);
switch (activatedBtn) {
case "green":
const greenAudio = new Audio("sounds/green.mp3");
greenAudio.play();
break;
case "red":
const redAudio = new Audio("sounds/red.mp3");
redAudio.play();
break;
case "yellow":
const yellowAudio = new Audio("sounds/yellow.mp3");
yellowAudio.play();
break;
case "blue":
const blueAudio = new Audio("sounds/blue.mp3");
blueAudio.play();
break;
default:
break;
}}

查看文档,函数setTimeout接受代码或回调函数作为第一个参数。它的工作原理是,当计时器到期时,回调函数的代码会被放在回调队列中。

最新更新