gpt4 book ai didi

javascript - 回调中的 setTimeout() 不起作用,为什么?

转载 作者:行者123 更新时间:2023-11-28 11:14:07 25 4
gpt4 key购买 nike

我想知道为什么 setimout(fun(),time) 在这里不起作用:

上下文:这显示一条消息并隐藏它,我想让它等待 2 秒,但如果我按照以下操作它不会隐藏(通常我在没有 settimeout() 的情况下执行此操作

function mostrar_msj(msj){
$('#notificaciones').text(msj);
$('#notificaciones').animate({
top:$(window).scrollTop()+"px"
},
{
queue: false,
duration: 350
});
$("#notificaciones").slideDown(1000, setTimeout('cerrar()',2000));
}

function cerrar(){
$("#notificaciones").fadeOut(2000);
}

我只是很困惑,在这里:?

最佳答案

当您使用 jQuery 时,更容易使用 delay() :

$("#notificaciones").slideDown(1000).delay(2000).fadeOut(2000);

动画函数会自动排队。

<小时/>

但要回答你的实际问题:

  1. 您没有正确设置回调。这个

    $("#notificaciones").slideDown(1000, setTimeout('cerrar()',2000));

    会将setTimeout返回值设置为slideDown的回调。正确的回调是

    $("#notificaciones").slideDown(1000, function() {
    setTimeout('cerrar()',2000);
    });

    但这并不能解释为什么 cerrar 没有像 setTimout 那样明显地被调用。这就引出了第二点:

  2. 如果将字符串传递给 setTimeout,则会在全局范围内对其进行求值。如果您在 ready 处理程序中包含这段代码,则 cerrar 不在全局范围内,因此不会被 JavaScript 找到。

    因此,不鼓励传递字符串。您应该传递一个函数引用:

    setTimeout(cerrar, 2000);

关于javascript - 回调中的 setTimeout() 不起作用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com