模板执行后如何实现time.Sleep?
Posted
技术标签:
【中文标题】模板执行后如何实现time.Sleep?【英文标题】:How to implement the time.Sleep after the template execution? 【发布时间】:2021-11-23 08:41:52 【问题描述】:在这个函数中,我想要主模板执行后的睡眠时间。并在 1 分钟后打印消息,但这给了我两个问题。
-
加载模板需要 1 分钟,而不是在模板执行后休眠。
它给出了添加
return
的消息。当我写 return nil
时,它给了我这个代码 time.Sleep(5 * time.Second) fmt.Println("Time Passed")
的另一个错误 unreachable code
。
我为这个 Main()
函数使用了中间件,而不是为每个错误消息重复 log.Fatal(err)
。
代码
func Main(w http.ResponseWriter, r *http.Request) error
match := Get("id1")
if match
return MainTmpl.Execute(w, nil)
time.Sleep(1 * time.Minute)
fmt.Println("Time Passed")
else
return LoginTmpl.Execute(w, nil)
return nil
【问题讨论】:
【参考方案1】:return
语句之后的任何代码都无法访问,因为函数将在执行这些语句之前返回。如果你想在写完响应后 1 分钟打印一些东西,你可以这样做:
func Main(w http.ResponseWriter, r *http.Request) error
match := Get("id1")
if match
go func()
time.Sleep(1 * time.Minute)
fmt.Println("Time Passed")
()
return MainTmpl.Execute(w, nil)
else
return LoginTmpl.Execute(w, nil)
return nil
这将启动一个 goroutine,它会休眠一分钟并打印。
【讨论】:
以上是关于模板执行后如何实现time.Sleep?的主要内容,如果未能解决你的问题,请参考以下文章
如何在执行 time.sleep() 之前让 mpi4py 进程完成打印?