从同步函数中调用异步函数

诺姆

我正在构建Blazor客户端应用程序。我正在使用MatBlazor组件。

我在页面上有两个MatSelectString控件。第一个用于选择类别,第二个用于从类别中选择产品。因此,我将其设置为:

<MatSelect Outlined="true" Label="Category" @bind-Value="@Category">
    <MatOptionString></MatOptionString>
    @foreach (var cat in GetCategories())
    {
        <MatOptionString Value="@cat">@cat</MatOptionString>
    }
</MatSelect>
<MatSelect Outlined="true" Disabled="@(!string.IsNullOrWhiteSpace(Category))" Label="Product" @bind-Value="@Product" >
    <MatOptionString></MatOptionString>
    @foreach (var prod in GetProducts(Category))
    {
        <MatOptionString Value="@prod">@prod</MatOptionString>
    }
</MatSelect>

GetProducts(Category)代码中,我想调用后端。问题是只有一个HttpClient.GetJsonAsync<>()方法,不能从非异步方法中调用。但是不能使GetProduct()异步。

我尝试过的事情:

  • 将对函数的调用放在异步lambda中(在foreach或其他代码块中不允许)
  • 使用Task.Result(挂起)
  • 将后端调用置于其他组件级异步事件中(多次调用)

有任何想法吗?

丹妮·埃雷拉(Dani Herrera)

您可以使用ValueChangedEventCallback:

<MatSelect 
    Outlined="true" 
    Label="Category" 
    ValueChanged="(string i)=>OnChangeCategory(i)"> @* <-- here *@
    <MatOptionString></MatOptionString>
    @foreach (var cat in GetCategories())
    {
        <MatOptionString Value="@cat">@cat</MatOptionString>
    }
</MatSelect>

@code
{
   protected async Task OnChangeCategory(string newValue)
   {
      this.Category = newValue;
      // call backend async tasks
      // ...
   }

blazorfiddle.com上查看

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以安全的方式从异步函数中调用同步函数

来自分类Dev

在Xamarin Forms中的PCL中以同步方法调用异步函数

来自分类Dev

异步函数中的同步异常

来自分类Dev

lua同步调用C异步函数

来自分类Dev

lua同步调用C异步函数

来自分类Dev

同步函数调用的行为与异步函数调用的“等待”行为

来自分类Dev

Qt中的异步函数调用

来自分类Dev

在类中调用异步函数

来自分类Dev

在Java中的异步函数调用

来自分类Dev

在构造函数中调用异步函数

来自分类Dev

使异步函数同步的后果

来自分类Dev

使mongoskin函数是异步同步的

来自分类Dev

同步迭代异步函数

来自分类Dev

异步函数停止同步函数

来自分类Dev

在JavaScript中异步函数的末尾运行同步函数?

来自分类Dev

如何在非异步函数中调用异步函数

来自分类Dev

CommonJS是同步的,但是如果调用异步函数会发生什么

来自分类Dev

为什么仅调用同步函数时javascript promises异步?

来自分类Dev

$ .each循环内的函数调用,是异步还是同步?

来自分类Dev

在Meteor.js中调用同步函数

来自分类Dev

使函数调用for循环同步

来自分类Dev

使函数调用同步

来自分类Dev

JavaScript函数是同步还是异步?

来自分类Dev

JavaScript函数是同步的还是异步的?

来自分类Dev

在OCaml中异步调用函数

来自分类Dev

在JS中链接异步函数调用?

来自分类Dev

在React中的getDerivedStateFromProps内部调用异步函数

来自分类Dev

从闭包中调用异步函数

来自分类Dev

在NSOperation中包装异步函数调用