Javascript:匿名函数,访问全局变量
Javascript : Anonymous function, access to global variables
经过数小时的搜索,我的代码有问题 下面。事实上,我想我离答案不是很远,但我仍然被封锁了......
我有一个在循环中调用的匿名函数,我想访问和刷新全局变量,但我尝试使用 window.myvariable,使用另一个函数,但没有任何反应......
这是我的代码:
for (var i = 0; i < SHP_files.length; i++) {
shapefile = new Shapefile({
shp: "shp/polygon/"+SHP_files[i]+".shp",
dbf: "shp/polygon/"+SHP_files[i]+".dbf",
}, function(data) {
polygon_layer.addLayer(new L.GeoJSON(data.geojson,{onEachFeature: onEachFeature, style: polygonStyle}));
polygon_layer.addTo(map);
console.log(polygon_layer.getLayers()); // IS OK
});
};
console.log(polygon_layer.getLayers()); // IS EMPTY !!
那么,我如何转换这个匿名函数,以便从我的代码中访问一些东西,谁在关注它?
非常感谢,对不起我的英语不是很好...
这是异步代码执行的典型问题。 示例代码不会从上到下执行。 特别是,你的匿名函数在完成它正在做的事情之前不会Shapefile
执行。 与此同时,你的JS按顺序执行。因此,上述代码的最后一行可能会在匿名函数之前执行。
要解决此问题,您需要从其回调中触发依赖于Shapefile
响应的任何代码:
for (var i = 0; i < SHP_files.length; i++) {
shapefile = new Shapefile({
shp: "shp/polygon/"+SHP_files[i]+".shp",
dbf: "shp/polygon/"+SHP_files[i]+".dbf",
}, function(data) {
polygon_layer.addLayer(new L.GeoJSON(data.geojson,{onEachFeature: onEachFeature, style: polygonStyle}));
polygon_layer.addTo(map);
executeMoreCode();
});
};
function executeMoreCode() {
console.log(polygon_layer.getLayers()); // IS OK
}
尝试在 for 循环或函数之外定义变量,在本例中为 polygon_layer。请参阅以下示例:
var f;
for(var i=0; i<5;i++){
(function(){
f = 10;
console.log(f); // Outputs 10
})();
}
console.log(f); // Also outputs 10
相关文章:
- 在page.open()-PhantomJS中无法访问全局变量
- 如何在 JavaScript 中访问全局变量
- 从Javascript中的对象方法中访问全局变量
- 无法从打字稿访问全局变量
- 未访问全局变量,未运行代码
- 为什么我无法从茉莉花中的 javascript 函数访问全局变量
- TypeScript:从类访问全局变量而不导入
- 当 Node.js 中的参数名称相同时,如何从函数访问全局变量
- 为什么我不能在我的 js 函数中访问全局变量
- Chrome扩展JSONP请求访问全局变量
- Javascript:匿名函数,访问全局变量
- Mocha测试未访问全局变量
- 访问全局变量
- 如何从解析模块访问全局变量
- 使用脚本加载程序注入的脚本访问全局变量
- 访问全局变量的嵌套成员可能不同
- JS:我怎样才能阻止访问全局变量呢?
- 使用Chrome访问全局变量
- 把手访问全局变量:if语句
- JS -访问全局变量问题