Blazor await LocalStorage.GetAsync 不要等待
Blazor await LocalStorage.GetAsync dont wait
我想从 .razor 文件中的 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);
}
一旦它到达“await LocalStorage.GetAsync”并且我继续使用调试器,就会调用“if (loggedIn.Result)”而不等待 await 的结果。
可能是什么原因?
致以最诚挚的问候,感谢您的想法。
您没有 await
调用 IsLoggedIn
,因此只要代码到达 await LocalStorage.GetAsync
调用,就会在主线程上继续执行。
你不能在 razor markup/inline 代码中使用 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);
}
}
我想从 .razor 文件中的 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);
}
一旦它到达“await LocalStorage.GetAsync”并且我继续使用调试器,就会调用“if (loggedIn.Result)”而不等待 await 的结果。
可能是什么原因?
致以最诚挚的问候,感谢您的想法。
您没有 await
调用 IsLoggedIn
,因此只要代码到达 await LocalStorage.GetAsync
调用,就会在主线程上继续执行。
你不能在 razor markup/inline 代码中使用 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);
}
}