【问题标题】:How to implement the time.Sleep after the template execution?模板执行后如何实现time.Sleep?
【发布时间】:2021-11-23 08:41:52
【问题描述】:

在这个函数中,我想要主模板执行后的睡眠时间。并在 1 分钟后打印消息,但这给了我两个问题。

  1. 加载模板需要 1 分钟,而不是在模板执行后休眠。
  2. 它给出了添加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
}

【问题讨论】:

    标签: go time sleep


    【解决方案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,它会休眠一分钟并打印。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 2011-05-04
      • 1970-01-01
      • 2020-08-01
      • 2011-11-07
      • 1970-01-01
      相关资源
      最近更新 更多