chrome.storage.sync.set не работает
Я создаю расширение Chrome, которое собирает ваше географическое положение при нажатии на него - синхронизирует данные, чтобы в нем сохранялись последние 20 координат долготы и широты, в которых вы находились. Но chrome.storage.sync.set, похоже, не работает!
var locations = [];
//get past locations and put them into 'locations' array
chrome.storage.sync.get("locations", function(data){
console.log("Getting Locations");
var index;
for (index = 0; index < data.length; ++index) {
locations.unshift(data);
}
});
//add current location to 'locations' array
navigator.geolocation.getCurrentPosition(function(position)
{
initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
});
locations.unshift(initialLocation);
//sync locations to cloud
var obj = {};
obj["locations"] = locations;
chrome.storage.sync.set(obj, function() {
console.log("Location Saved");
console.log(locations);
});
Поэтому каждый раз, когда я запускаю этот код - он должен (а) проходить мимо местоположений (б) добавлять текущее местоположение и (в) сохранять его обратно в облаке. Но каждый раз, когда я запускаю программу, массив 'location' остается размером [1], иначе ничего не получится получить / установить! Я просмотрел несколько других постов по этому поводу, касающихся правильности аргументов, но я проверил мои и считаю, что они обоснованные.
Что происходит?!? Кто-нибудь может пролить свет на то, как заставить этот код работать? Большое спасибо моим Героям Кодекса:D
1 ответ
chrome.storage.sync.get является асинхронным, как вы можете увидеть здесь
Итак, когда вы пытаетесь сохранить результат в locations
переменная, выполнение метода не завершено.
chrome.storage.sync.get('locations', function(data){
console.log("Getting Locations");
console.log(data.locations); // The locations object.
});
Пожалуйста, обратитесь к этому сообщению.