在Coffeescript + Jquery文件中延迟函数调用

时间:2019-05-17 19:23:56

标签: jquery coffeescript

我在Ruby on Rails项目中有一个Coffeescript + Jquery文件,我想向其中添加延迟功能,我一直在尝试setTimeout,但我什么都无法工作,这是代码...

products.coffee

$ ->
  if $('.pagination').length && $('#products').length
    $(window).scroll ->
      url = $('.pagination .next_page').attr('href')
      if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50
        $('.pagination').text("Loading more products...")
        $.getScript(url)
    $(window).scroll()

$。getScript(url)行是我想要延迟调用5秒钟的行,我尝试过在该行之前放置setTimeout函数调用,也尝试使用setTimeout($。getScript(url),5000)和没有任何效果。由于这是Coffeescript + Jquery,因此我在网上找不到很多。

我相信setTimeout函数不会在窗口内延迟,而是在其他地方延迟。不确定。

我们将不胜感激:)

1 个答案:

答案 0 :(得分:2)

  

我也尝试使用setTimeout($。getScript(url),5000)

那是因为您没有正确使用setTimeout。

签名为setTimeout(FUNCTION, TIME)

您需要在此处传递实际函数,但您传递的是$.getScript(url),这是调用函数的结果(不是函数本身) )。

相反,您可以简单地将getScript调用包装在匿名函数中:

setTimeout ->
  $.getScript(url)
, 5000

# or, one liner if you prefer
setTimeout (-> $.getScript(url)), 5000