[英]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.