Je veux exécuter des fonctions dans l'ordre mais je reçois constamment 1,3,4,2 dans la console.Parce que ltt et lott reste 0 dans la fonction getDistanceFromLatLonInKm.Toutes les idées? Merci d'avance.Javascript fonction de la fonction
var ltt=0;
var lott=0;
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(ajmo);
console.log('1');
}
function ajmo(position){
console.log('2');
window.ltt=position.coords.latitude;
window.lott=position.coords.longitude;
document.write(window.ltt);
}
console.log('3');
document.write(window.ltt);
document.write("kurac:" + getDistanceFromLatLonInKm(45.332497,14.436384));
function getDistanceFromLatLonInKm(lat1,lon1){
console.log('4');
//second
var R = 6371; // Radius of the earth in km
var dLat = deg2rad(ltt-lat1); // deg2rad below
var dLon = deg2rad(lott-lon1);
var a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(ltt)) *
Math.sin(dLon/2) * Math.sin(dLon/2)
;
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; // Distance in km
return d;
}
function deg2rad(deg) {
return deg * (Math.PI/180)
}
'geolocation.getCurrentPosition' est asynchrone, c'est pourquoi 3 se déclenche avant 2 et 4. – Andy
Y a-t-il un moyen de le rendre synchrone ou de le faire avant? – Axon
JavaScript est asynchrone en général, donc écrire simplement le code ne garantit pas la façon dont il est exécuté, vous devez utiliser les fonctions de rappel appropriées pour cela. Lorsque vous utilisez les fonctions de rappel, assurez-vous que le code qui s'y trouve n'est pas exécuté avant d'être prêt à être exécuté. – Jonast92