3 回答

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

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
我看到c.JSON(http.StatusOK, "")
那里,所以我假設(shè)代碼是一個(gè)路由處理程序(使用了 echo 框架)。
如果您想嘗試的是:對(duì)于每個(gè)傳入的 http 請(qǐng)求,等待 4 小時(shí),然后運(yùn)行GetTimeTables()
; 那么你的http請(qǐng)求將會(huì)因?yàn)槌瑫r(shí)而失敗。
也time.AfterFunc
將異步執(zhí)行(作為 goroutine),因此 http 請(qǐng)求將在回調(diào)執(zhí)行之前完成。
也許請(qǐng)?jiān)敿?xì)告訴用戶您想要實(shí)現(xiàn)的目標(biāo)。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
我使用 echo 框架執(zhí)行 myAPI,myAPI 將通過 func GetTimeTables 調(diào)用其他 API。你的意思是:
func (t timeTables) CallFunc(c echo.Context) {
time.AfterFunc(4*time.Hour, func() {
t.GetTimeTables("myAPI")
})
}
- 3 回答
- 0 關(guān)注
- 183 瀏覽
添加回答
舉報(bào)