[英]Returned array from a function is not caught in another function
正如標題所說,即使它可能有點模糊,當我調用一個函數在另一個函數中返回一個對象數組時,由於某種原因,我無法在當前函數中捕獲另一個對象的結果。 我有一種感覺,這只是我想念的一件小事。
這是返回對象數組的函數:
function GetAllNeighboors(myLocationLat, myLocationLong) {
$.get("/Home/GetAllLocation",
function (data, status) {
Neightbours = new Object();
var j = 0;
for (var i = 0; i < data.length; i++) {
if (distanceBetweenTwoStations(myLocationLat, myLocationLong, data[i].latitudine, data[i].longitudine,"K") <= 1 && data[i].latitudine != myLocationLat && data[i].longitudine != myLocationLong) {
Neightbours[j] = data[i];
j++;
}
}
return Neightbours;
});
}
這是我調用該功能的地方:
if (data.isClosed != true) {
map.setCenter(new google.maps.LatLng(data.latitudine, data.longitudine));
map.setZoom(17);
} else {
Vecini = new Object();
Vecini = GetAllNeighboors(data.latitudine, data.longitudine);
注意:第一個功能的Neightbours
帶有預期結果。
注2:我想我弄清楚問題是什么,但我不確定如何解決它。 問題是我不是在等待結果,我應該使函數異步,以便在第二個函數中得到結果。 知道我怎么能這樣做嗎?
你沒有從第一個函數返回任何東西,你從該函數內部的函數返回。 嘗試這個:
function GetAllNeighboors(myLocationLat, myLocationLong) {
return $.get("/Home/GetAllLocation",
function (data, status) {
Neightbours = new Object();
var j = 0;
for (var i = 0; i < data.length; i++) {
if (distanceBetweenTwoStations(myLocationLat, myLocationLong, data[i].latitudine, data[i].longitudine,"K") <= 1 && data[i].latitudine != myLocationLat && data[i].longitudine != myLocationLong) {
Neightbours[j] = data[i];
j++;
}
}
return Neightbours;
});
}
您可以將callback
給GetAllNeighbours
函數,並將其值設置在$ .get回調中,如下所示
function GetAllNeighboors(myLocationLat, myLocationLong, cb) {
$.get("/Home/GetAllLocation",
function (data, status) {
Neightbours = new Object();
var j = 0;
for (var i = 0; i < data.length; i++) {
if (distanceBetweenTwoStations(myLocationLat, myLocationLong, data[i].latitudine, data[i].longitudine,"K") <= 1 && data[i].latitudine != myLocationLat && data[i].longitudine != myLocationLong) {
Neightbours[j] = data[i];
j++;
}
}
cb(Neightbours);
});
}
你現在稱之為:
if (data.isClosed != true) {
map.setCenter(new google.maps.LatLng(data.latitudine, data.longitudine));
map.setZoom(17);
} else {
GetAllNeighboors(data.latitudine, data.longitudine, function(Neighboors){
Vecini = new Object();
Vecini = Neighboors
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.