Kezdőoldal » Számítástechnika » Programozás » Javascriptben hogy kell...

Jjandras kérdése:

Javascriptben hogy kell átírni (helyettesíteni) az alábbi sort úgy, hogy továbbra se adjon hibát ha a konstans számok (11,12) helyett a már korábban definiált változókat szeretném használni? : const data = {varx: 11, vary: 12 };

Figyelt kérdés
Ezt szeretném, de nem működik : const data = {varx: xx, vary: yy }; Az xx és yy olyan változók melyek értéke állandóan frissül (külső adatbázisból).

2019. júl. 31. 21:53
 1/7 tabaki ***** válasza:
Hm, const... Változók használata esetén utolsó ötletem lenne pont ezt odaírni.
2019. júl. 31. 22:19
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

Bármiyen ötletre vevő vagyok, kezdő vagyok a témában. De muszáj valahogy ezt sor használni/átgyúrni, mert egy tutorial programot akarok használni , aminek a következő sora :

const { varx, vary } = data;

nélkül nem működnek az utána lévő részek. Bármilyen tippnek nagyon örélnék.

2019. júl. 31. 23:38
 3/7 tabaki ***** válasza:
Én egyáltalán nem ismerem a Javascriptet, de nem lehet const helyett pl. var? Vagy előzőleg let-tel létrehozni a változókat, és utána már csak a nevükkel hivatkozni rájuk? De tényleg csak találgatok, az idézett két sorból nem tudom kiokoskodni, mi a teendő. Remélem, előbb-utóbb idecsöppen valamelyik JS-ben jártas kolléga.
2019. aug. 1. 00:37
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:
79%

let xx = 11;

let yy = 12;


const data = {varx: xx, vary: yy };

const { varx, vary } = data;


Itt csak összebogarásztam amiket te már eleve leírtál, persze működik hibátlanul.

Esetleg ha leírnád mi a "baj" vele, talán segíteni is tudnánk, most nem igazán érthető a célod.



Tippek:


Nem írtad, hogy külső forrásból való frissítés után a datában is frissülnie kell-e, de gondolom igen mivel azt mondtad "nem működik". Akkor vagy frissíted azon az eventen ahol új értéket kap az xx,yy is, így:

data.varx = xx;

data.vary = yy;


vagy ha az a két változó elérhető a jelenlegi scope-odban, akkor ez is megteszi:


const data = {

varx: function(){return xx;},

vary: function(){return yy;}

};



hívás így meg data.varx() lesz, és mindig az aktuális xx, yy értéket adja vissza.

2019. aug. 1. 01:20
Hasznos számodra ez a válasz?
 5/7 A kérdező kommentje:

Jó lett volna a részletek belemenése nélkül megúszni, de úgy látom nem megy. Van egy tutorial program, ami kirakja a kordináta pontot a térképre.


https://www.youtube.com/watch?v=nZaZ2dB6pow&t=56s


A változó kordinátaértékeket (az eredeti program) egy API-n keresztül kapja és adja át JSON lekéréssel a térkép/marker rajzoló résznek. Ezt a részt szeretném helyettesíteni a saját kordináta értékpárommal amit FirebaseDatabase-en keresztül kapok. Ehhez kellene átírni kb. 1-2 sort, amin már régóta görcsölök, de lehet hogy alábecsülöm a problémát.


az eredeti prog.részlet :

const api_url = ' [link]

async function getISS() {

const response = await fetch(api_url);

const data = await response.json();

const { latitude, longitude } = data;


marker.setLatLng([latitude, longitude]);

mymap.setView([latitude, longitude], );

}

getISS();

setInterval(getISS, 3000);



valami ilyesmire gondoltam :


/* const api_url = ' [link]

let firstTime = true; */


async function getISS() {

/* const response = await fetch(api_url);

const data = await response.json();

const { latitude, longitude } = data; */


var ref11 = firebase.database().ref().child('name1');

ref11.on('value', function(snapshot) {

var latitude = snapshot.val() ;

console.log(snapshot.val()) ;

});


var ref12 = firebase.database().ref().child('name2');

ref12.on('value', function(snapshot) {

var longitude = snapshot.val() ;

console.log(snapshot.val()) ;

});


const data = {latitude:?????????? , longitude:?????? };

const { latitude, longitude } = data;


marker.setLatLng([latitude, longitude]);

mymap.setView([latitude, longitude], );


}

getISS();

setInterval(getISS, 3000);


Leegyszerűsítve a kérdést, mit írjak a const data = .. sorba ?

Köszönöm az eddigi és a jövőbeni segítséget is.

2019. aug. 1. 15:30
 6/7 anonim ***** válasza:

Ennek a két sornak semmi értelme:


const data = {latitude:?????????? , longitude:?????? };

const { latitude, longitude } = data;


Berakod a longitude és tatitude értékét a datába csak hogy kivedd utána őket, ami ekvivalens ezzel:

const latitude = ??????????;

const longitude = ??????;


De a te problémád nem itt van. Én nem ismerem a firebase-t de úgy tűnik egy aszinkron callback hívás eredményét szeretnéd használni szinkron módon, amit nem lehet. A callback függvénybe kell beraknod a következő sorokat miután megvan az új latitude és longitude:


marker.setLatLng([latitude, longitude]);

mymap.setView([latitude, longitude], );


A probléma hogy abból kettő van tehát chainelni kell őket valamilyen módon, de biztos vagyok benne hogy tud promisokat is a firebase tehát abba az irányba kéne menni.


Callbackkel valahogy így kéne:


var ref11 = firebase.database().ref().child('name1');

var ref12 = firebase.database().ref().child('name2');


ref11.on('value', function(snapshot) {

var latitude = snapshot.val() ;

console.log(snapshot.val()) ;


ref12.on('value', function(snapshot) {

var longitude = snapshot.val() ;

console.log(snapshot.val()) ;


marker.setLatLng([latitude, longitude]);

mymap.setView([latitude, longitude], );


});


});


Gyors google kereséssel úgy tűnik tényleg lehet promisokat használni tehát innentől leegyszerűsödik az egész ennyire mivel a függvény async és lehet használni az await kulcsszót (ha nem lenne az akkor a Promise.all() megoldja):


const latitude = (await firebase.database().ref().child('name1').once('value')).val();

const longitude = (await firebase.database().ref().child('name2').once('value')).val();


marker.setLatLng([latitude, longitude]);

mymap.setView([latitude, longitude], );

2019. aug. 3. 12:59
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:
Köszönom a segítséget, megoldódott.
2019. aug. 3. 15:55

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!