0
我面临着以下同步问题。如果它有一个简单的解决方案/解决方法,我不会感到惊讶。 BuildMenu()函数是从另一个代码块调用的,它调用CreateMenuData(),它向请求返回一些数据的服务发出请求。问题在于,因为在使用数据变量时它是对服务的异步调用,所以它是未定义的。我提供的js日志也显示了我的观点。Javascript esriRequest(dojo)在函数异步问题
BuildMenu: function() {
console.log("before call");
var data=this.CreateMenuData();
console.log("after call");
//Doing more stuff with data that fail.
}
CreateMenuData: function() {
console.log("func starts");
data = [];
dojo.forEach(config.layerlist, function (collection, colindex) {
var layersRequest = esriRequest({
url: collection.url,
handleAs: "json",
});
layersRequest.then(
function (response) {
dojo.forEach(response.records, function (value, key) {
console.log(key);
data.push(key);
});
}, function (error) {
});
});
console.log("func ends");
return data;
}
Console log writes:
before call
func starts
func ends
after call
0
1
2
3
4
可能重复[如何返回从异步调用的响应?](http://stackoverflow.com/questions/14220321 /如何对返回的响应从 - 一个异步呼叫) –