Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access JSON Object.$$state.value?

Warning: I'm going to sound like I have no idea what I'm talking about here, because I kind of don't. I'm in the process of self-learning Javascript and AngularJS through a lot of trial and error coding.

I have some javascript code (hesitant to copy here because it's a mess) that returns an Object with the following structure: enter image description here

What I want to save to a variable is the object corresponding to Object.$$state.value in the picture. This object has username, hash and salt, which are what I care about. I don't know what all the other stuff like $$state are or how they got there.

However, if I do this (let's call the main Object "whatIHave"):

var whatIWant = whatIHave.$$state.value;

this does not work. whatIWant is null.

Does anyone recognize what's going on here? What is $$state, how did it get there, and how can I extract the value I want?

like image 221
Ray Zhang Avatar asked May 09 '15 23:05

Ray Zhang


1 Answers

So that is a promise. You need to do something like:

whatIHave.then(function(whatIWant) {
  // Work here
});

I highly recommend you to research what a promise is (like this link)

If you're curious enough, about what is that $$state and what is that value, I will explain a bit:

The promises have a $$state and there angular saves all the callback functions you want to call in a pending array (all those function you registered with .then like I explained before).

It also have the status: resolved (1) and rejected (2)

Finally, when you resolve or reject the promise, the value you pass when doing that, is saved in value.

You're trying to cheat in here, because when you try to access that value, it could be not there yet (that is what async is all about).

So the idea is learning the basic of promises, learning how to work with them and then use your whatIHave correctly.

like image 120
Jesus Rodriguez Avatar answered Oct 06 '22 00:10

Jesus Rodriguez