【发布时间】:2020-04-17 11:13:12
【问题描述】:
public List<S3Object> ListObjects(string bucketname, string identityId)
{
List<S3Object> objectList = new List<S3Object>();
var request = new ListObjectsV2Request()
{
BucketName = bucket_name,
Prefix = identityId
};
Client.ListObjectsV2Async(request, (responseObject) =>
{
if (responseObject.Exception == null)
{
List<S3Object> list = new List<S3Object>();
responseObject.Response.S3Objects.ForEach((o) =>
{
objectList.Add(o);
});
}
else
{
Debug.Log(responseObject.Exception);
}
});
//return objectList;
// return the object after the callback is finished, e.g. added all the objects into objectList;
// ListObjectsV2Async method returns void, so it is not possible to use async and await. i guess?
}
我想在 ListObjectsV2Async 方法中回调完成后返回 objectList 字段。但是,这个方法是异步运行的,所以如果我只返回列表,它将返回一个空列表。那么如何等到回调将所有对象添加到列表中才返回呢?
【问题讨论】:
-
用
}).GetAwaiter().GetResult();替换}); -
对于 Unity,该操作不将 CancellationToken 作为参数,而是将 AmazonServiceCallback
和 AsyncOptions 作为附加参数。它返回无效。