slh*_*hck 3 javascript jquery json closures
请考虑以下示例:
var features = [];
$.getJSON(annotations_url, function(data) {
$.each(data, function(key, val) {
features.push(wkt_parser.read(val.annotation.wkt_data));
// at this point, "features" contains objects
});
});
annotationLayer.addFeatures(features);
// here, it is empty again
Run Code Online (Sandbox Code Playgroud)
在这里,我期望features不断成长.但是,在最后一行,features再次是空的.
这是为什么,以及如何将我推正确价值观features的内$.each(或者更确切地说,匿名函数内)?
该$.getJSON调用是异步的,所以annotationLayer.addFeatures在JSON请求已完成之前可能被执行.调用addFeatures方法内部的$.getJSON调用,后.each循环.
如果你需要执行更多的东西features,可以考虑创建一个新函数(包括addFeatures你需要调用的方法),然后在调用中的.each循环之后调用这个新函数$.getJSON.