gpt4 book ai didi

javascript - 从回调函数中获取变量

转载 作者:行者123 更新时间:2023-11-30 07:43:52 26 4
gpt4 key购买 nike

function foreignCoordinatesArray(){

var coordinates = [];
$.getJSON('/critics.json?travel_id=' + $('#foreign_travel').val(), success);

function success(ary) {
for(var a in ary){
var obj = ary[a];
coordinates.push(new google.maps.LatLng(obj.latitude, obj.longitude));
}

}
console.log(coordinates);
}

最后坐标仍然是 [] 而不是 [{...},{...},...]。我想这一定是闭包的问题

我怎样才能在坐标数组中得到我想要的值?

最佳答案

这不是闭包的问题,​​而是 JavaScript AJAX 调用的异步性质。 AJAX 调用响应到达的那一刻(并且您的成功函数被调用,传播 coordinates 数组)它是在您登录该数组之后的方式 - 当时它是空的。

我猜你想以某种方式从 foreignCoordinatesArray() 函数返回 coordinates。如您所见,您不能使用 return:

function foreignCoordinatesArray(){
var coordinates = [];
$.getJSON('/critics.json?travel_id=' + $('#foreign_travel').val(), success);

function success(ary) {
//...
}
return coordinates;
}

相反,您应该传递一个将接收坐标的回调函数:

function foreignCoordinatesArray(coordinatesCallback){
var coordinates = [];
$.getJSON('/critics.json?travel_id=' + $('#foreign_travel').val(), success);

function success(ary) {
//...
coordinatesCallback(coordinates);
}
}

顺便说一句,在将其用作 URL 的一部分之前,您应该转义 $('#foreign_travel').val()

关于javascript - 从回调函数中获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11004822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com