После нескольких часов поиска у меня есть проблема с моим кодом Ниже. На самом деле, я не очень далек от ответа. Я думаю, но я все еще заблокирован ...Javascript: анонимная функция, доступ к глобальным переменным
У меня есть анонимная функция, называемая внутри цикла, и я хочу получить доступ и обновить глобальные переменные, но я попробовал с помощью 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 !!
Итак, как я мог бы превратить эту анонимную функцию, чтобы иметь что-то, что я могу получить доступ из моего кода, который следующее что?
Большое спасибо, и извините за мой английский не очень хорошо ...
сделать некоторые исследования по асинхронным (без блокировки) кодирования модели. – user2736012
Я не совсем понимаю ваш вопрос, что я вижу здесь, вы передали функцию в качестве аргумента. Вы уверены, что он вызван в конструкторе? –
Что делает 'новый Shapefile()' do? Если он загружает файлы '.shp' и' .dbf' через AJAX, а функция - обратный вызов успеха, загрузка может происходить асинхронно. ("на заднем фоне"). Это означает, что после окончания цикла файлы будут загружаться только, они будут добавлены позже в 'polygon_layer'. – millimoose