You can use promises.
$('.form-directions').on('submit', function () {
var promises = [];
waypoints = [];
$('.waypoint').each(function () {
promises.push(geoCode($(this).val()));
});
$.when.apply(null, promises).then(function() {
// Everything is done, do something
});
return false;
});
And then in your geoCode
function
function geoCode (address) {
var deferred = $.Deferred();
nokia.places.search.manager.findPlaces({
searchTerm: address,
onComplete: function(data, requestStatus, requestId) {
onGeoCodingCompleted(data, requestStatus, requestId);
deferred.resolve();
},
searchCenter: map.center
});
return deferred.promise();
}