Blazor等待LocalStorage.GetAsync不要等待



我想从.rarzor文件中的LocalStorage读取信息,然后在此基础上执行进一步的源代码。问题是他在从LocalStorage读取时没有等待。‎

@{
var loggedIn = IsLoggedIn();
if (loggedIn.Result)
{
// do something
}
}
private async Task<bool> IsLoggedIn()
{
var result = await LocalStorage.GetAsync<Account>("AccountInfo");
_account = result.Value;
return string.IsNullOrEmpty(_account?.Name);
}

一旦它到达";等待LocalStorage.GetAsync";并且我继续使用调试器;如果(loggedIn.Result(";在不等待等待结果的情况下调用。‎

‎原因可能是什么?‎

‎致以最良好的问候,并感谢您的想法。‎

您不是在await调用IsLoggedIn,所以一旦代码到达await LocalStorage.GetAsync调用,就会在主线程上继续执行。

您不能在剃刀标记/内联代码中使用await,因此您需要以不同的方式执行操作。

试试这样的东西:

@if (loggedIn)
{
// do something
}
@code 
{
bool loggedIn = false;
protected override async Task OnInitializedAsync()
{
loggedIn = await IsLoggedIn();
StateHasChanged();
}
private async Task<bool> IsLoggedIn()
{
var result = await LocalStorage.GetAsync<Account>("AccountInfo");
_account = result.Value;
return string.IsNullOrEmpty(_account?.Name);
}
}

相关内容

  • 没有找到相关文章

最新更新