0

它是一个 ASP.Net 应用程序,这是 javascript 函数的一部分:

//x & y are global variables
x = document.getElementById(MapXVal).value;
y = document.getElementById(MapYVal).value;
if ((x === undefined || x === null || x === "") &&
    (XVal !== undefined && XVal !== null && XVal !== "")) {

        x = document.getElementById(XVal).value;
        y = document.getElementById(YVal).value;
        point = new esri.geometry.Point(x, y, new esri.SpatialReference({ "wkt": ...}));
        var OutSR = new esri.SpatialReference({ "wkid": 102113 });
        gsvc.project([point], OutSR, function (projectedPoints) {

            var output = projectedPoints[0];
            alert('deep inside');
            x = output.x;
            y = output.y;
        });
    }
alert('outer scope');
if (x !== null && y !== null && x !== "" && y !== "") {
    //do something with x & y
}

我正在尝试做的事情:调用函数gsvc.project...etc来计算我的全局变量的值x&y稍后将在代码中使用。

问题:其中的代码gsvc.project将在其包含function完成执行后执行(例如,消息外部范围将显示在deep inside之前),所以我不会有 x & y 的值,直到为时已晚。

我不是Javascript方面的专家,所以我一直在寻找为什么会发生这种情况,但到目前为止一无所获。我已经通过在声明中复制我的代码解决了这个问题gsvc.project..function(projectedPoints){,但是我不想重复,我想知道我的问题是否有解决方案:控制执行,导致延迟,或者可能是更好的方法来做到这一点?

4

0 回答 0