
# 异步调用
#### 功能说明
桶相关接口和对象相关接口均支持以"Async"结尾的方式进行异步调用（例如，同步方法为ObsClient-\>putObject，则异步方法为ObsClient-\>putObjectAsync）。
异步调用完成后会将返回结果输出到回调函数中，回调函数依次包含[SDK自定义异常](https://support.huaweicloud.com/api-obs_php_sdk_api_zh/obs_38_0105.html)和[SDK公共结果对象](https://support.huaweicloud.com/api-obs_php_sdk_api_zh/obs_38_0104.html)两个参数，如果回调函数中SDK自定义异常参数不为空，则表明操作失败；反之，则表明操作成功。
#### 代码样例
本示例用于异步上传字符串"Hello OBS"到桶名为"bucketname"里，名称为"objectname"。
代码示例如下所示：
```
$promise = $obsClient->putObjectAsync ( [ 
       'Bucket' => 'bucketname',
       'Key' => 'objectkey',
       'Body' => 'Hello OBS' 
], function ($obsException, $resp) {
       if ($obsException === null) {
              printf ( "RequestId:%s\n", $resp ['RequestId'] );
       } else {
              printf ( "ExceptionCode:%s\n", $obsException->getExceptionCode () );
              printf ( "ExceptionMessage:%s\n", $obsException->getExceptionMessage () );
       }
} );
$promise->wait ();
```
![](https://support.huaweicloud.com/api-obs_php_sdk_api_zh/public_sys-resources/note_3.0-zh-cn.png)
- 异步调用会立即返回异步调用结果对象（GuzzleHttp\\Promise\\Promise），需要调用该对象的wait方法以等待异步调用完成。
 
