Alibaba Cloud SDK for Go 支持两种方式的异步调用:
-
使用channel作为返回值
responseChannel, errChannel := client.FooWithChan(request) // this will block response := <-responseChannel err = <-errChannel
-
使用 callback 控制回调
blocker := client.FooWithCallback(request, func(response *FooResponse, err error) { // handle the response and err }) // blocker 为(chan int),用于控制同步,返回1为成功,0为失败 // 在<-blocker返回失败时,err依然会被传入的callback处理 result := <-blocker