philos Δημοσ. 27 Σεπτεμβρίου 2022 Δημοσ. 27 Σεπτεμβρίου 2022 Καλησπέρα! Αντιμετωπίζω ένα περίεργο πρόβλημα με πρόσβαση σε μεταβλητή ενός object. Το console.log(data) λέει τα παρακάτω. Θέλω το data.ed και κυρίως, το data.ed.id όμως και τα δύο επιστρέφουν undefined. Τι κουλό είναι πάλι αυτό; Το JSON stringify βγάζει ότι είναι κυκλικό object. Καμιά ιδέα πως θα πάρω το data.ed.id?
elvizakos Δημοσ. 28 Σεπτεμβρίου 2022 Δημοσ. 28 Σεπτεμβρίου 2022 Σιγουρέψου ότι το data δεν έχει δηλωθεί σε άλλο scope από αυτό που το ζητάς (πχ σε κάποια άλλη συνάρτηση, block ή namespace) και επίσης ότι έχει δηλωθεί και έχει πάρει τιμές πριν από το σημείο που το ζητάς. Δοκίμασε επίσης αυτό αμέσως αφού το έχεις δηλώσει: window['data'] = data; και στην κονσόλα δοκίμασε αυτό: console.log(window.data.ed.id); Αυτό θα πρέπει να δουλέψει σε όποιο scope και αν έχει δηλωθεί. 22 ώρες πριν, philos είπε Το JSON stringify βγάζει ότι είναι κυκλικό object. Αυτό λογικά συμβαίνει γιατί κάποιο κλειδί αναφέρεται σε κάποιο γονικό αντικείμενο. πχ θα μπορούσε να υπάρχει κάτι τέτοιο: data.ed.data = data;
philos Δημοσ. 28 Σεπτεμβρίου 2022 Μέλος Δημοσ. 28 Σεπτεμβρίου 2022 (επεξεργασμένο) Λοιπόν παιδιά δοκίμασα αυτό από το stackoverflow και δούλεψε! https://stackoverflow.com/questions/17546953/cant-access-object-property-even-though-it-shows-up-in-a-console-log Τι κουλό είναι πάλι αυτό; //The property you're trying to access might not exist yet. Console.log works because it executes after a small delay, but that isn't the case for the rest of your code. Try this: var a = config.col_id_3; //undefined setTimeout(function() { var a = config.col_id_3; //voila! }, 100); Επεξ/σία 28 Σεπτεμβρίου 2022 από philos
node7 Δημοσ. 29 Σεπτεμβρίου 2022 Δημοσ. 29 Σεπτεμβρίου 2022 Στη javascript δεν είναι ασυνήθιστο νομίζω, γιατί είναι ασύγχρονη. Αν το αντικείμενο το παίρνεις από κάπου στο ίντερνετ υπάρχει η πιθανότητα να μην έχει πάρει τιμή όταν ζητάς την τιμή του data.ed. Το παρακάτω παράδειγμα, του ασύγχρονου της javascript, είναι από εδώ: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Promises#using_the_fetch_api const fetchPromise = fetch('https://mdn.github.io/learning-area/javascript/apis/fetching-data/can-store/products.json'); console.log(fetchPromise); fetchPromise.then((response) => { console.log(`Received response: ${response.status}`); }); console.log("Started request…"); Που έχει σαν αποτέλεσμα: Promise { <state>: "pending" } Started request… Received response: 200
Predatorkill Δημοσ. 30 Σεπτεμβρίου 2022 Δημοσ. 30 Σεπτεμβρίου 2022 Στις 29/9/2022 στις 6:53 ΜΜ, node7 είπε Στη javascript δεν είναι ασυνήθιστο νομίζω, γιατί είναι ασύγχρονη. Αν το αντικείμενο το παίρνεις από κάπου στο ίντερνετ υπάρχει η πιθανότητα να μην έχει πάρει τιμή όταν ζητάς την τιμή του data.ed. Το παρακάτω παράδειγμα, του ασύγχρονου της javascript, είναι από εδώ: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Promises#using_the_fetch_api const fetchPromise = fetch('https://mdn.github.io/learning-area/javascript/apis/fetching-data/can-store/products.json'); console.log(fetchPromise); fetchPromise.then((response) => { console.log(`Received response: ${response.status}`); }); console.log("Started request…"); Που έχει σαν αποτέλεσμα: Promise { <state>: "pending" } Started request… Received response: 200 Ειναι ασχετο αυτο που εγραψες με το θεμα του op.
ghostaki Δημοσ. 30 Σεπτεμβρίου 2022 Δημοσ. 30 Σεπτεμβρίου 2022 console.log() is "async": https://www.linkedin.com/pulse/consolelog-asynchronous-vladyslav-petukhov-1c/
thanasis00 Δημοσ. 4 Οκτωβρίου 2022 Δημοσ. 4 Οκτωβρίου 2022 Είναι ξεκάθαρα θέμα async εδώ το ζήτημα. Ο op τραβάει από κάπου data και πάει να τα χρησιμοποιήσει σύγχρονα στον κώδικα ενώ έρχονται ασύγχρονα. Είτε κάνε sync το API call, είτε κάνε αλλαγή στον κώδικά σου να μπορεί να παίξει ασύγχρονα.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα