InvokeAsync通过回调函数

我正在尝试编写一个通过JSInterop使用Google地图的Blazor组件。我正在尝试调用“ DirectionsService”类和“ route”方法。DirectionsService Route Method

这是我的本地方法:

    public async Task<DirectionResponse> Route(DirectionsRequest request)
    {
        var json = await _jsObjectRef.InvokeAsync<string>(
                "google.maps.DirectionsService.route",request);

        var directionResponse = JsonConvert.DeserializeObject<DirectionResponse>(json);

        return directionResponse;
    }

此方法有两个参数。一个是请求对象。第二个是回调函数。 Method Definition

如何使用“ InvokeAsync”方法完成此操作?

如何包含回调函数以便正确接收响应?

yghe001 回答:InvokeAsync通过回调函数

您不能包含直接调用.NET代码的回调。

但是,您可以将回调传递给另一个javascript函数。

然后,javascript函数可以使用标准语法回调到.NET:

    return all((case1 == (17,1),case2 == (17,case3 == (2,case4 == (1,case5 == (0,-4)))
,

所以...这基本上是我得出的结论。该代码不是最终的代码,特别是拒绝部分,但实际上是使用async / await使对DirectionsService的调用同步。

代码如下:

        let promise = new Promise((resolve,reject) => {
            directionsService.route(dirRequest,(result,status) => {
               if (status == 'OK') {
                   resolve(result);
               }
               else
               {
                   reject(status);
               }
            });
        });

        //Wait for promise
        let result = await promise;
        return result;

从本质上讲,这使我能够响应调用此javascript函数的C#函数。现在剩下的唯一事情就是我将需要的位序列化为C#函数。

感谢Postlagerkarte帮助我。

本文链接:https://www.f2er.com/3114850.html

大家都在问