我正在尝试编写一个通过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”方法完成此操作?
如何包含回调函数以便正确接收响应?
答案 0 :(得分:1)
您不能包含直接调用.NET代码的回调。
但是,您可以将回调传递给另一个javascript函数。
然后,javascript函数可以使用标准语法回调到.NET:
return all((case1 == (17, 1), case2 == (17, 1), case3 == (2, 1),
case4 == (1, 1), case5 == (0, -4)))
答案 1 :(得分:0)
所以...这基本上是我得出的结论。该代码不是最终的代码,特别是拒绝部分,但实际上是使用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帮助我。