我想从.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);
}
}