google在类内映射javascript directionsService.route请求:将类实例传递给回调函数

google maps javascript directionsService.route request inside class: pass the class instance to the callback function

本文关键字:实例 函数 回调 请求 映射 javascript route directionsService google      更新时间:2023-09-26

谷歌地图方向服务路线请求具有以下原型:

route(request:DirectionsRequest, callback:function(DirectionsResult, DirectionsStatus))

我在类实例方法中调用服务请求,该方法看起来像这样:

myClass.protype.routeStuff(){
    directionsService.route(request, function(response, status){
         '''handle the response here'''
        });
};

我需要访问"中的myClass实例,在此处处理响应"。我不是JS专家。我怎样才能把它传下去?

更一般地说,给定路由的原型,我如何将额外的参数传递给回调函数?

更新1:我最终使用Chad的答案创建了一个调用的类回调方法:

directionsService.route(request, this.extendRouteToLocationCallback.bind(this));

独立地,我能够通过强制关闭回调函数来解决这个问题,如下所示:

var extrastuff = this;
directionsService.route(request, function (response, status) {
    routeCallback(extrastuff, response, status);});

我相信这样做也是可能的:

directionsService.route(request, function (response, status) {
    routeCallback(response, status);}.bind(this));

就我的直接目的而言,Chad的方法产生了一些更好的结构化代码。

更新2:我采用的最终解决方案与此绑定,并传递了如下额外的参数:

var request = buildMapRequest(currentEndLocation, null, location);
directionsService.route(request, this.extendRouteToLocationCallback.bind(this, location));

回调看起来是这样的:

Route.prototype.extendRouteToLocationCallback = function(location, response, status){...}

使用函数绑定

function directionsServiceCallback(response, status){
   // this keyword is now a reference to a myClass instance due to
   // function binding.
});
myClass.protype.routeStuff(){
  directionsService.route(request, directionsServiceCallback.bind(this));
};