简体   繁体   中英

Javascript 'callback' function not working

I using Google map API v3 to draw routes. But for some path the route is not plotted in the map. so I write a callback function. But it dose not working, my code is

function putRoute(request,color,callback)
{
  var color   = color;
  var request = request;

  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      var polylineOptionsActual = {
        strokeColor  :color,
        strokeOpacity: 1.0,
        strokeWeight : 5,
      };

      var directionsRenderer = new google.maps.DirectionsRenderer;
      directionsRenderer.setMap(map);
      directionsRenderer.setOptions( { polylineOptions: polylineOptionsActual, suppressMarkers: true} );
      directionsRenderer.setDirections(response);
    }
  });

  if (typeof callback === "function") {
    callback(request,color);
  }
}

putRoute(request,color,function() {

});

尝试将功能putRoute重命名为

function putRoute(request,color){}

I guess this condition is not true:

  if (typeof callback === "function") {

I'd change that to

  if (typeof callback != "undefined") {

Atleast, I do know that this last code is working.

You can also try this one:

if (callback instanceof Function) {
// do stuff;
}

Your callback routine is in the wrong place. It needs to be inside the callback function for the DirectionsService:

function putRoute(request,color,callback)
{
  var color   = color;
  var request = request;

  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      var polylineOptionsActual = {
        strokeColor  :color,
        strokeOpacity: 1.0,
        strokeWeight : 5,
      };

      var directionsRenderer = new google.maps.DirectionsRenderer;
      directionsRenderer.setMap(map);
      directionsRenderer.setOptions( { polylineOptions: polylineOptionsActual, suppressMarkers: true} );
      directionsRenderer.setDirections(response);
      // only execute callback on success   
      if (typeof callback === "function") {
        callback(request,color);
      }
    } else { 
      alert("Directions request failed:" + status); 
    }
  });

}

I had the same problem when I was defining callback as:

function callback() {
...
}

then I changed it to:

callback = function() {
...
}

and everything worked! hope it helps ;)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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