我使用gin-gonic作为HTTP处理程序。我希望在用户提出POST
请求后预呈现一些图形资源。为此,我放了一个中间件,将一个函数(里面有一个计时器)分配给map[string]func()
,并在分配后直接调用该函数。
问题是,当用户发出两个后续请求时,该函数被调用两次。
有没有办法在Javascript中清除函数参考和/或当前正在运行的调用,如clearInterval
或clearTimeout
?
由于
答案 0 :(得分:3)
没有;你计划运行的任何功能,因为goroutine需要返回或致电runtime.Goexit
。
如果您正在寻找一种方法来为您的工作者构建取消,Go提供了一个原语来处理它,这已经是任何HTTP请求的一部分 - 上下文。查看Go博客中的这些文章:
答案 1 :(得分:2)
我认为您的渲染功能正在调用库,因此您无法控制大部分时间花费的代码。如果您确实有这样的控制,只需将一个通道传递到goroutine,定期检查通道是否关闭,如果发生这种情况,只需从goroutine return
。
但实际上我会推荐一个不同的,更简单的解决方案:跟踪(在map
)当前正在处理的文件的文件名(或哈希),并在启动之前检查该地图第二个。