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`からデータを受信すると、非同期コールバックの結果を処理できます。

非同期コールバックに結果を返す必要がある場合は、構造体型を定義して結果やエラー情報をカプセル化し、その構造体をチャネルに送ることができます。非同期コールバックの結果を受け取るときに、構造体内のエラー情報を確認して異常な状況を処理できます。

bannerAds