var cordinats = function () {
return new Promise(function(resolve, reject){
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var long = position.coords.longitude,
lat = position.coords.latitude;
var myLocation = {
long: long,
lat: lat
};
console.log('Оп1');
resolve(myLocation);
console.log(myLocation);
})
}
var errObj = {
0: "Unkonown Error",
1: "Permission denied by User",
2: "Position is not available",
3: "Request Timed Out"
}
console.log('Оп2');
reject(`${err.code} ${errObj[err.code] }`);
});
}
cordinats().then(function(location) {
var loc = location;
console.log(loc);
changeHtmlInfo();
}, function(error) {
});
Я открываю код через Chrome. Сначала в консоли появляется Оп2. Потом при подтверждении данных о считывании геолокации - Оп1. Последный console.log(loc) вообще не выполняется. Вопрос:
cordinats().then
Метод getCurrentPosition
- асинхронный. Это значит, что при заходе в if
выполнение не останавливается, пока не выполнится callback, а проходит дальше, выходит из if
и вызывает reject
.
Метод then
принимает два параметра: первый для успешного разрешения и второй - для не успешного.
Так как всегда вызывается reject
, то всегда вызывалась функция переданная вторым параметром, и, так как она пустая, ничего не выводилось.
Например, можно избавиться от if
и воспользоваться тем, что метод getCurrentPosition
тоже может принимать обработчик для ошибки. Теперь функция вызывается всегда и завершение Promise зависит от вызова соответствующего обработчика, достаточно просто вызвать в нужных местах resolve
и reject
.
function cordinats() {
return new Promise(function(resolve, reject){
navigator.geolocation.getCurrentPosition(function(position) {
var long = position.coords.longitude,
lat = position.coords.latitude;
var myLocation = {
long: long,
lat: lat
};
resolve(myLocation);
}, function(err) {
var errObj = {
0: "Unkonown Error",
1: "Permission denied by User",
2: "Position is not available",
3: "Request Timed Out"
}
reject(`${err.code} ${errObj[err.code] }`);
});
});
}
cordinats().then(function(location) {
var loc = location;
console.log(loc);
changeHtmlInfo(loc);
}, function(error) {
console.log(error);
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте, помогите составить регуляркуЕсть строка, если в строке например есть 453|571 то взять все что до " " (пробела)
Написал следующий код для получения значения из input и вставки этого значения в label и в обратном порядкеНо почему то происходит сбрасывание...
Подскажите как сделать так что если нету значения в ячейке mtimein то не создается ячейка если значение есть то ячейка создается и выводит содержимое,...
Пожалуйста, объясните как работает маршрутизация в реакте, если я использую обычный phpТо есть просто на main