3 回答

TA貢獻1842條經驗 獲得超21個贊
你的程序需要阻塞,否則,它會在AfterFunc
觸發之前退出。
嘗試從此示例中刪除睡眠https://play.golang.org/p/_25RffWDyPV來查看。
GetTimeTables
不是可以直接調用的函數,您需要將其作為 timeTables 對象的方法來調用。另外,正如 @icza 所提到的,您應該向該函數傳遞一個值。
像這樣的東西應該有效:
func (t timeTables) CallFunc(c echo.Context) {
time.AfterFunc(4*time.Hour, func() {
t.GetTimeTables(c)
})
}

TA貢獻1943條經驗 獲得超7個贊
我看到c.JSON(http.StatusOK, "")
那里,所以我假設代碼是一個路由處理程序(使用了 echo 框架)。
如果您想嘗試的是:對于每個傳入的 http 請求,等待 4 小時,然后運行GetTimeTables()
; 那么你的http請求將會因為超時而失敗。
也time.AfterFunc
將異步執行(作為 goroutine),因此 http 請求將在回調執行之前完成。
也許請詳細告訴用戶您想要實現的目標。

TA貢獻1780條經驗 獲得超5個贊
我使用 echo 框架執行 myAPI,myAPI 將通過 func GetTimeTables 調用其他 API。你的意思是:
func (t timeTables) CallFunc(c echo.Context) {
time.AfterFunc(4*time.Hour, func() {
t.GetTimeTables("myAPI")
})
}
- 3 回答
- 0 關注
- 187 瀏覽
添加回答
舉報