在golang中,可以使用goroutine和channel來實現異步回調。
下面是一個示例代碼:
package main
import (
"fmt"
"time"
)
func main() {
// 創建一個channel用于接收異步回調的結果
resultChan := make(chan string)
// 啟動定時任務
go func() {
// 模擬任務執行
time.Sleep(2 * time.Second)
// 異步回調,將結果發送到resultChan
resultChan <- "任務執行完成"
}()
// 主線程繼續執行其他操作
fmt.Println("主線程繼續執行其他操作")
// 等待接收異步回調的結果
result := <-resultChan
// 處理異步回調的結果
fmt.Println("異步回調結果:", result)
}
在上面的代碼中,我們通過go func()
啟動了一個goroutine執行定時任務,模擬了任務執行的耗時。在任務執行完成后,通過將結果發送到resultChan,實現了異步回調。主線程繼續執行其他操作,不需要等待任務執行完成。當接收到resultChan的數據時,就可以處理異步回調的結果。
需要注意的是,如果需要返回結果給異步回調,可以定義一個結構體類型,將結果和錯誤信息封裝在結構體中,然后將結構體發送到channel中。在接收異步回調結果時,可以通過判斷結構體中的錯誤信息來處理異常情況。