我有以下代码:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
player.Exec(command, func(response map[string]interface{}){
if response["statusCode"]==float64(0) { // ok
w.Write([]byte(response["statusMessage"].(string)))
player.SendMessage("<b>"+response["statusMessage"].(string)+"</b>")
fmt.Println("playerExec: "+time.Now().Format("20060102150405"))
} else { // failed to process
w.WriteHeader(http.StatusBadRequest) // 400
w.Write([]byte(response["statusMessage"].(string)))
player.SendMessage(response["statusMessage"].(string))
}
})
// Time.Sleep(Time.Seconds*2)
fmt.Println("cmd: "+time.Now().Format("20060102150405"))
})
的处理player.Exec()需要一些时间(因为它启动了 WebSocket 连接),所以在一段时间后调用回调函数(见下面的证明)。太晚了,所以我看到以下错误:
http:来自 main.main.func1.1 的多余 response.WriteHeader 调用
此外,当我在浏览器中打开“/”页面时,我看不到任何内容。如果我添加Time.Sleep()到我的代码中(参见注释行),那么我会看到内容。Exec() 代码在这里。
日志显示以下内容 -
cmd: 20200612192659
playerExec: 20200612192659
有什么方法可以等待回调函数返回吗?
慕的地8271018
偶然的你
相关分类