模板执行后如何实现time.Sleep?
How to implement the time.Sleep after the template execution?
在这个函数中,我想要在主模板执行后休眠的时间。并在 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
}
return
语句之后的任何代码都是无法访问的,因为该函数将在执行这些语句之前 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,它将休眠一分钟并打印。
在这个函数中,我想要在主模板执行后休眠的时间。并在 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
}
return
语句之后的任何代码都是无法访问的,因为该函数将在执行这些语句之前 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,它将休眠一分钟并打印。