它是一个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
包含gsvc.project..function(projectedPoints){
后执行(例如,外部范围将显示消息在深入之前)所以我不会有x&的值直到为时已晚。
我不是 Javascript 的专家,所以我一直在寻找为什么会发生这种情况,并且在这一点上找不到任何东西。我已经通过在{{1}}声明中复制我的代码来解决了这个问题,但是我不想复制,并且想知道我的问题是否有解决方案:控制执行,导致延迟,或者可能是更好的方法吗?