2016-10-17 3 views
-1

Daten an Callback-Funktionen übergeben? den letzten Wert im Array

var unique_interests = window.facebook_interests.filter((v, i, a) => a.indexOf(v) === i); 
 
var input = map.getCenter(); 
 
var a = input.lat(); 
 
var b = input.lng(); 
 
var latlng = {lat: a, lng: b}; 
 
window.markersGP = []; 
 

 
for(var i=0; i<unique_interests.length; i++) 
 
{ 
 
    var request = { 
 
     location: latlng, 
 
     radius: '500', 
 
     query: unique_interests[i] 
 
    }; 
 
     
 
    console.log(request); 
 
    service = new google.maps.places.PlacesService(map); 
 
    service.textSearch(request, function (results, status){ 
 
     alert(request.query); 
 
    }); 
 
}

Immer wenn die Callback-Funktionen aufgerufen werden, vollständig, ausgeführt die for-Schleife und die alert() immer druckt. Gibt es eine Möglichkeit, die Daten mit dem Funktionsaufruf zu binden?

Antwort

0

Sie IIFE Muster anwenden können:

https://en.wikipedia.org/wiki/Immediately-invoked_function_expression

So ist der Code sould wie:

for(var i=0; i<unique_interests.length; i++){ 
    var request = { 
     location: latlng, 
     radius: '500', 
     query: unique_interests[i] 
    }; 

    console.log(request); 

    (function (req) { 
     var service = new google.maps.places.PlacesService(map); 
     service.textSearch(req, function (results, status){ 
      alert(req.query); 
     }); 
    })(request); 
}