javascript - 从函数返回的数组未在另一个函数中捕获
问题描述
正如标题所说,即使它可能有点模糊,当我调用一个在另一个函数中返回对象数组的函数时,由于某种原因,我无法在当前函数的另一个对象中捕获结果。我有一种感觉,这只是我想念的一件小事。
这是返回对象数组的函数:
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:我想我弄清楚了问题所在,但我不确定如何解决它。问题是我不等待结果,我应该使函数异步,以便在第二个函数中得到结果。知道我该怎么做吗?
解决方案
您没有从第一个函数返回任何内容,而是从该函数内部的函数返回。尝试这个:
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;
});
}
推荐阅读
- javascript - 如何将我的数组对象推送到 MongoDB
- c# - Xamarin Forms 在编辑器控件中获取光标位置
- node.js - 未捕获的语法错误:无法在模块外部使用导入语句 CHROME EXTENSION MV3
- asp.net-mvc - 通过 pubxml 文件在 Web 部署期间使用 app_offline 关闭网站
- postgresql - 使用最早日期提取最早记录并过滤其他值
- pytorch - Torch.dist 集体通信结果错误
- python - 如何以与在多个 GPU 上运行的多个衍生进程以及每个 GPU 处理的批量数据的输入相同的顺序获得输出?
- python - 如何将 URL 值从模板传递到 Django 中基于类的视图中的 form_valid 方法
- php - 动态调用html复选框对应的函数
- node.js - 是否可以将gridjs结果定向到控制台