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 /如何對返回的響應從 - 一個異步呼叫) –