模板执行后如何实现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?的主要内容,如果未能解决你的问题,请参考以下文章

golang中定时器实现,Ticker,Timer

golang中定时器实现,Ticker,Timer

如何在执行 time.sleep() 之前让 mpi4py 进程完成打印?

linux 新手提问,我有一段程序,test.py,想让linux每隔6小时执行一次,如何实现

python如何微秒级延时?

php如何支持实现多线程并发