Golang是否能够实现浏览器逐行输出

Golang是否能够实现PHP类似的缓冲区输出

我现在使用的beego进行Web开发,想实现一个类似功能:

页面打印1到10000000的数字,使用循环进行操作,然后每次循环时输出当前的数字。

如果正常操作,那么当页面显示时,数字已经全部显示完成了,这样打不到我要的效果。

有没有办法能够达到我打开页面,然后开始执行循环,每循环一次,页面中就输出一个数字,而不是全部循环、输出完成后才显示页面?

PHP可以有类似于ob_flush等函数来实现,可是golang不太清除怎么实现。

阅读 4.7k
1 个回答
package main

import (
    "fmt"
    "net/http"
    "log"
    "time"
)


func handler(res http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(res, "<body>")
    for i := 0; i < 1000; i++ {
        fmt.Fprint(res, "<script>document.body.innerHTML = ''</script>")
        fmt.Fprintf(res, "%d", i)
        if f, ok := res.(http.Flusher); ok {
            f.Flush()
        } else {
            log.Println("Damn, no flush");
        }
        time.Sleep(1000 * time.Millisecond)
    }

    fmt.Fprintln(res, "</body>")
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏