Javascript 使用coffeescript延迟(去盎司)ajax请求
我正在rails应用程序中使用CoffeeScript,我需要延迟远程ajax表单提交,我遇到的主要问题是取消通知请求,以便表单在250毫秒后发送,而用户不在表单中键入内容 现在我有一些东西看起来像这样,显然它不起作用,所以它有一些调试输出来帮助我 查看下表,您应该知道我想要“取消公告”的函数在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)
元素.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...')