在javascript中将变量赋值给回调函数?

时间:2016-03-27 09:27:52

标签: javascript variables scope callback

是否可以将回调范围之外的变量添加到回调函数本身?

对于这个特定情况,我正在尝试触发多个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));
    }
}

问题在于海拔和状态不再是海拔服务的反应......是否有可能实现我的目标?或者不能这样做?不知道这应该如何工作。感谢。

0 个答案:

没有答案