此问题在此处已有答案:
async Task<IEnumerable> throws "is not an iterator interface type" error(2个答案)
Asynchronous iterator Task<IEnumerable>(3个答案)
5天前关闭。
我用的是C#,.net 6.0
我正在尝试转换IEEE802.11方法和ot的调用者方法以异步工作。
我有一个代码,看起来像这样:
public IEnumerable<MyUser> getUsers()
{
return AccountById
.Keys
.SelectMany(accountId => {
try
{
return getUsersFor(accountId)
.Select(x => new MyUser(x,
SetAccountUniqueName(AccountById[accountId].Name,
AccountById[accountId].Id)));
}
catch (Exception ex)
{
_log.Error(ex);
return Enumerable.Empty<MyUser>();
}
});
}
public IEnumerable<User> getUsersFor(string accountId)
{
ListUsersResponse usersResponse;
string marker = null;
do
{
using (var myClient = new ServiceClient(pass))
{
usersResponse =
myClient.ListUsersAsync(
new ListUsersRequest { Marker = marker, MaxItems = MAX_ITEMS })
.Result;
foreach (var user in usersResponse.Users)
{
yield return user;
}
}
marker = usersResponse.Marker;
} while (usersResponse.IsTruncated);
}
字符串
如何将getUsers()和getUsersFor()转换为JavaScript方法?
2条答案
按热度按时间nwo49xxi1#
除非我漏了什么你只需要把签名从
字符串
到
型
并在你的aprc方法中删除对
.Result
的调用并等待它们:型
ljsrvy3e2#
您需要删除
.Result
并将方法更改为与async
和await
关键字异步,并将返回类型更改为Task<IEnumerable<MyUser>>
和Task<IEnumerable<User>>
。字符串