繁体   English   中英

InvokeAsync 传递回调 function

[英]InvokeAsync pass callback function

我正在尝试编写一个通过 JSInterop 使用谷歌地图的 Blazor 组件。 我正在尝试调用“DirectionsService”class 和“route”方法。 路线服务路线方法

这是我的本地方法:

    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;
    }

这个方法有两个参数。 一个是请求 object。 第二个是回调function。 方法定义

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

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

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

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

然后 javascript function 能够使用标准语法回调 .NET:

DotNet.invokeMethodAsync('YourApp', 'YourMethodAsync')

所以...这基本上是我得出的结论。 代码不是最终的,特别是拒绝部分,但它本质上使用 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 ZC1C425268E68385D1AB5074C11 的 C# function 现在剩下的唯一事情就是我将响应序列化回 C# function 以及我需要的位。

感谢 Postlagerkarte 帮助我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM