1 回答
TA贡献1828条经验 获得超3个赞
您的代码导致 HTTP 处理程序等待 4 秒,删除文件,然后完成 HTTP 响应。只需删除睡眠。
func workOrderApp(w http.ResponseWriter, r *http.Request) {
workOrderAppProcess(w)
os.RemoveAll(tempDir)
}
这更有效,更直接地反映了您的意图,并且不会让 HTTP 连接不必要地打开额外的 4 秒。
如果您的处理程序中未显示其他逻辑,并且您希望确保在所有情况下都发生删除,则 adefer可能很有用:
func workOrderApp(w http.ResponseWriter, r *http.Request) {
workOrderAppProcess(w)
defer os.RemoveAll(tempDir)
/* Other logic that may do things */
}
在聊天中讨论之后,很明显workOrderAppProcess正在呈现您的 HTML,并且os.RemoveAll正在删除该 HTML 所需的图像。要解决此问题,您需要延迟删除,但要在提供 HTML 之后。这可以通过一个简单的 goroutine 来完成:
func workOrderApp(w http.ResponseWriter, r *http.Request) {
workOrderAppProcess(w)
go func() {
time.Sleep(60 * time.Second)
os.RemoveAll(tempDir)
}()
}
- 1 回答
- 0 关注
- 132 浏览
添加回答
举报
