【问题标题】:Delay a Function Call within Coffeescript + Jquery File在 Coffeescript + Jquery 文件中延迟函数调用
【发布时间】:2019-10-05 03:23:21
【问题描述】:

我在 Ruby on Rails 项目中有一个 Coffeescript+Jquery 文件,我想为它添加延迟功能>

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 函数不是在窗口内延迟,而是在其他地方延迟。不确定。

任何帮助表示赞赏:)

【问题讨论】:

    标签: jquery coffeescript


    【解决方案1】:

    我也尝试过使用 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
    

    【讨论】:

    • 嘿,这有效,感谢您的帮助和解释。我认为 setTimeout 也会评估一个调用它的表达式。 jQuery 新手,感谢您的帮助
    • 这不是 jQuery 的东西,它是 Javascript 中回调的工作方式。然而,coffeescript 2 确实支持 async ...
    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多