首页 > 解决方案 > 从函数返回的数组未在另一个函数中捕获

问题描述

正如标题所说,即使它可能有点模糊,当我调用一个在另一个函数中返回对象数组的函数时,由于某种原因,我无法在当前函数的另一个对象中捕获结果。我有一种感觉,这只是我想念的一件小事。

这是返回对象数组的函数:

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一个函数带有预期的结果。

NOTE2:我想我弄清楚了问题所在,但我不确定如何解决它。问题是我不等待结果,我应该使函数异步,以便在第二个函数中得到结果。知道我该怎么做吗?

标签: javascript

解决方案


您没有从第一个函数返回任何内容,而是从该函数内部的函数返回。尝试这个:

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;        
        }); 

}

推荐阅读