是否可以将回调范围之外的变量添加到回调函数本身?
对于这个特定情况,我正在尝试触发多个Google Maps ElevationService查询,但我只想在完成所有请求后继续。我正在使用i
作为当前迭代的for循环,并尝试将其绑定到回调,如下所示:
function getRouteElevationChartData(batchSize) {
var elevator = new google.maps.ElevationService();
for (var i = 0; i < totalElevationBatches; i++) {
currentRouteElevationBatch = i;
var thisBatchPath = [];
for (var j = i * batchSize; j < i * batchSize + batchSize; j++) {
if (j < directions.routes[0].overview_path.length) {
thisBatchPath.push(directions.routes[0].overview_path[j]);
} else {
break;
}
}
elevator.getElevationAlongPath({
path: thisBatchPath,
samples: 256
}, function (elevations, status, i) {
console.log('elevations: ' + elevations);
console.log('status: ' + status);
console.log('i: ' + i);
if (status != google.maps.ElevationStatus.OK) {
return;
}
onGetRouteElevationChartDataComplete(i, elevations);
}(i));
}
}
问题在于海拔和状态不再是海拔服务的反应......是否有可能实现我的目标?或者不能这样做?不知道这应该如何工作。感谢。