我已经尝试在这篇文章http://evanhahn.com/smoothing-out-settimeout-in-coffeescript/中实现解决方案3来创建一个我可以传递参数的延迟函数。这对我有用但是我还需要能够清除超时并且我不确定如何做到这一点?
timeout = 5000
func = (message) ->
console.log(message)
delay = (time, fn, args...) ->
setTimeout fn, time, args...
newEvent = {
id: 22,
delay: delay 5000, -> func("hi")
}
我希望能够做到这一点或同等的事情:
clearTimeout(newEvent.delay)
我还考虑过使用下划线延迟功能,它允许轻松传递和停止,但由于最大超时长度为24天,我必须使用https://www.npmjs.com/package/long-timeout
答案 0 :(得分:0)
为了清除超时,您需要为超时分配一个变量,并使用它来清除它。
timeout = 5000
myTimeout = null
delay = (time, fn, args...) ->
myTimeout = setTimeout fn, time, args...
clearTimeout(myTimeout)
请注意,您需要在延迟函数
之外的范围内声明超时答案 1 :(得分:0)
我完成了什么:
timeout = 5000
func = (message) ->
console.log(message)
delay = (time, fn, args...) ->
newEvent = {
id: 22,
delay: setTimeout fn, time, args...
}
delay 5000, -> func("hi")