JKe*_*rny 5 async-await blazor blazor-client-side blazor-webassembly
我试图在 blazor(客户端)启动期间调用 api 以将语言翻译加载到 ILocalizer 中。
在这一点上,我尝试从 get 请求中获取 .Result blazor 在标题中引发错误。
这可以通过在 program.cs 中调用此方法来复制
private static void CalApi()
{
try
{
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(@"https://dummy.restapiexample.com/api/v1/employees");
string path = "ididcontent.json";
string response = httpClient.GetStringAsync(path)?.Result;
Console.WriteLine(response);
}
catch(Exception ex)
{
Console.WriteLine("Error getting api response: " + ex);
}
}
Run Code Online (Sandbox Code Playgroud)
避免.Result,很容易死锁。您会收到此错误,因为单线程 webassembly 不(不能)支持该机制。我会认为这是一个功能。如果它可以在监视器上等待,它就会冻结。
private static async Task CalApi()
{
...
string response = await httpClient.GetStringAsync(path);
...
}
Run Code Online (Sandbox Code Playgroud)
所有事件和生命周期方法覆盖都可以async Task在 Blazor 中,因此您应该能够适应它。
| 归档时间: |
|
| 查看次数: |
4292 次 |
| 最近记录: |