它是一个 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){
,但是我不想重复,我想知道我的问题是否有解决方案:控制执行,导致延迟,或者可能是更好的方法来做到这一点?