Javascript如何在setTimeout回调函数中使用参数?

时间:2015-06-11 15:30:19

标签: javascript jquery

我想显示消息,然后使用setTimeout功能隐藏它们。所以我希望我传递给setTimeout函数的函数取一个参数,隐藏的消息,所以我可以使用1个通用的回调函数。我尝试了下面的代码,但回调执行时label参数未定义。

var label = $('.js-a-label');
label.html('the message!');
setTimeout(hideMessage(label), 5000);

function hideMessage(label) {
  label.html('');
}

1 个答案:

答案 0 :(得分:1)

代码中,您可以使用@AssociationOverride(name = "client", joinColumns = { @JoinColumn(name = "client_idx", foreignKey = @ForeignKey(name = "FK_TEST")) }) ,因为您的功能会关闭它:

label

在您正在调用的函数关闭您希望它使用的信息的一般情况下,您有几个选项:

  1. 添加以下功能:

    var label = $('.js-a-label');
    label.html('the message!');
    setTimeout(hideMessage, 5000);
    function hideMessage() {
      label.html('');
    }
    
  2. 使用Function#bind(ES5 +)

    var label = $('.js-a-label');
    label.html('the message!');
    setTimeout(function() { hideMessage(label); }, 5000);
    

    var label = $('.js-a-label'); label.html('the message!'); setTimeout(hideMessage.bind(null, label), 5000); 会返回一个新函数,在调用时会调用具有特定Function#bind值的原始函数(我们不需要它,所以我只使用上面的this)和任何您提供的参数null

  3. 使用$.proxy,其功能与bind完全相同:

    Function#bind