Cri*_*s M 4 blazor blazor-client-side blazor-webassembly
Blazor 新手,
我正在通过 API 登录,但我注意到 UI 不会自动更新。
例如:当我第一次登录无效用户时,不会显示错误消息,但第二次尝试时会正确显示。不知怎的,有1次点击延迟。
private async void DoLogin()
{
var result = await API.LoginAsync(username, password);
if (result.ResultID == 0)
{
}
else
ErrorMessage = result.ErrorMessage;
}
Run Code Online (Sandbox Code Playgroud)
当我把它改成
private async Task DoLogin()
{
var result = await API.LoginAsync(username, password);
if (result.ResultID == 0)
{
}
else
ErrorMessage = result.ErrorMessage;
}
Run Code Online (Sandbox Code Playgroud)
它正在按预期工作。
有人可以照亮吗
在方法签名中使用 async void 和 async Task 有什么区别?
async Task
(也只是Task
)返回,Blazor 将使用它。async void
方法是“即发即忘”。应尽可能避免。为什么 async void 不会立即更新 UI?
因为它是在不被观察到的情况下执行的。在这种情况下,它与按钮之后完成的代码并行运行(但慢于)。因此 UI在 LoginAsync() 返回之前更新。
归档时间: |
|
查看次数: |
3407 次 |
最近记录: |