1[← 并发](8-Concurrent-CN.md) | 异步调用[(English)](9-Asynchronous-EN.md) | [包管理 →](10-Package-Management-CN.md)
2***
3## 异步调用
4
5### 发起异步调用
6Alibaba Cloud SDK for Go 支持两种方式的异步调用:
7
81. 使用channel作为返回值
9    ```go
10    responseChannel, errChannel := client.FooWithChan(request)
11
12    // this will block
13    response := <-responseChannel
14    err = <-errChannel
15    ```
16
172. 使用 callback 控制回调
18
19    ```go
20    blocker := client.FooWithCallback(request, func(response *FooResponse, err error) {
21        // handle the response and err
22    })
23
24    // blocker 为(chan int),用于控制同步,返回1为成功,0为失败
25    // 在<-blocker返回失败时,err依然会被传入的callback处理
26    result := <-blocker
27    ```
28
29***
30[← 并发](8-Concurrent-CN.md) | 异步调用[(English)](9-Asynchronous-EN.md) | [包管理 →](10-Package-Management-CN.md)