Golangで非同期コールバックを実装する
Go言語では、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`からデータを受信すると、非同期コールバックの結果を処理できます。
非同期コールバックに結果を返す必要がある場合は、構造体型を定義して結果やエラー情報をカプセル化し、その構造体をチャネルに送ることができます。非同期コールバックの結果を受け取るときに、構造体内のエラー情報を確認して異常な状況を処理できます。