Javascript setTimeout函数不停止执行?

Javascript setTimeout函数不停止执行?,javascript,jquery,Javascript,Jquery,我偶然发现setTimeout有一个问题 $current.removeClass(class2); setTimeout(function(){$current.css('display', 'none')},1000); if(!$current.is('#' + id)){ $('#' + id).css('display','block'); setTimeout(function(){$('#' + id).addClass(class2)}, 1000); $

我偶然发现setTimeout有一个问题

$current.removeClass(class2);
setTimeout(function(){$current.css('display', 'none')},1000);
if(!$current.is('#' + id)){
    $('#' + id).css('display','block');
    setTimeout(function(){$('#' + id).addClass(class2)}, 1000);
    $current = $('#' + id);
}

我希望在添加css“display:none”后执行if语句。我怎样才能做到这一点?我认为setTimeout会停止代码的执行,然后在函数运行后继续执行。

在超时时间内将代码放入函数中(代码间距也很重要…):


setTimeout
将在n毫秒后运行该函数,但脚本的其余部分将继续运行

如果希望代码的其余部分在
显示:none
之后才运行,则还需要将其移动到函数中:

$current.removeClass(class2);
setTimeout(函数(){
$current.css('display','none');
if(!$current.is(“#”+id)){
$('#'+id).css('display','block');
setTimeout(函数(){
$('#'+id).addClass(class2);
}, 1000);
$current=$(“#”+id);
}
},1000);

超时后要执行的所有内容放入回调中。Javascript没有与
Sleep(1000)
功能等效的功能。
setTimeout
不会停止代码的执行。这就是
setTimeout
的全部要点-它是异步的。如果我弄错了,很抱歉,我认为setTimeout没有回调?@FrederikWitte:你认为传递给
setTimeout
的函数是什么?这是回电话。哦,那我没有告诉我有关条款。我以为你的意思是setTimeout(函数(),延迟,回调)
$current.removeClass(class2);
setTimeout(function() {
    $current.css('display', 'none')

    if( !$current.is('#' + id) ) {
        $('#' + id).css('display','block');
        setTimeout(function() {
            $('#' + id).addClass(class2)
        }, 1000);
        $current = $('#' + id);
    }
},1000);