Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用coffeescript延迟(去盎司)ajax请求_Javascript_Ruby On Rails_Coffeescript - Fatal编程技术网

Javascript 使用coffeescript延迟(去盎司)ajax请求

Javascript 使用coffeescript延迟(去盎司)ajax请求,javascript,ruby-on-rails,coffeescript,Javascript,Ruby On Rails,Coffeescript,我正在rails应用程序中使用CoffeeScript,我需要延迟远程ajax表单提交,我遇到的主要问题是取消通知请求,以便表单在250毫秒后发送,而用户不在表单中键入内容 现在我有一些东西看起来像这样,显然它不起作用,所以它有一些调试输出来帮助我 查看下表,您应该知道我想要“取消公告”的函数在元素.keyup(event)->函数中,任何帮助都将是惊人的 remoteTable = bindEvents: (element) -> element.keyup (event)

我正在rails应用程序中使用CoffeeScript,我需要延迟远程ajax表单提交,我遇到的主要问题是取消通知请求,以便表单在250毫秒后发送,而用户不在表单中键入内容

现在我有一些东西看起来像这样,显然它不起作用,所以它有一些调试输出来帮助我

查看下表,您应该知道我想要“取消公告”的函数在
元素.keyup(event)->
函数中,任何帮助都将是惊人的

remoteTable =

  bindEvents: (element) ->
    element.keyup (event) ->
      console.log(event)


  send: (event) ->
    console.log(event)
**如果我能收集一些这方面的例子,那将非常有帮助?**我确实看到了下划线.js的方式,但是 在这里,这是我的老方法:我只是不知道该怎么做:


我在coffeescript.org上玩过,那里有一个在线的“try coffeescript”翻译/跑步者,看起来

remoteTableOrg =
  bindEvents: (element) ->
    element.keyup (event) ->
      console.log(event)
  send: (event) ->
    console.log(event)
转化为

var remoteTableOrg;

remoteTableOrg = {
  bindEvents: function(element) {
    return element.keyup(function(event) {
      return console.log(event);
    });
  },
  send: function(event) {
    return console.log(event);
  }
};
因此,
element.keyup
实际上是一个函数调用,函数作为参数

看到这个,我试着

remoteTable =
  bindEvents: (element) ->
    element.keyup _.debounce((event) ->
      console.log(event)
    ,250)
  send: (event) ->
    console.log(event)
得到:

var remoteTable;

remoteTable = {
  bindEvents: function(element) {
    return element.keyup(_.debounce(function(event) {
      return console.log(event);
    }, 250));
  },
  send: function(event) {
    return console.log(event);
  }
};

我什么都没试过,但我不知道为什么这样不行。我不得不承认我对coffeescript做得不多,但它看起来很简单。

你可以用一个简单的超时来完成这项工作,不需要太花哨

remoteTable =
  bindEvents: (element) ->
    timeout = null
    element.keyup (event) ->
      clearTimeout(timeout)
      timeout = setTimeout(remoteTable.send, 250)

  send: ->
    console.log('Sending request...')