This question already has answers here:
How to return value from an asynchronous callback function? [duplicate]
(3 answers)
Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference
(7 answers)
Closed 1 year ago.
I need to get a local storage value outside the call, to use it in another function,
I see this is an async function and outside log gets called first, but cant rly wrap how it works and why I get the value on the second call, but not it the first call.
So the question is how do I get the value outside the call and make First Call work as second call ?
var Credentials = []
chrome.storage.local.get(["Key"], function(result) {
const o = result.Key.email
console.log("this is email", result.key.email)
Credentials.push({"email": result.key.email})
console.log("Second Call",Credentials[0].email)
});
console.log("First Call",Credentials[0])
Related
This question already has answers here:
How do I return the response from an asynchronous call?
(41 answers)
Closed 5 months ago.
I'm trying to retrieve data from database and store the value into a variable, but it gives me undefined value which means variable is not storing the data.
var n1;
var reff=firebase.database().ref('login-demi/');
reff.on("child_added", function(data){
var newnum=data.val();
n1=newnum.number; //4
if (n1==4){
n1=newnum.age;
}
});
console.log(n1);
But if I try to "put console.log(n1)" inside the function under "n1=newnum.age;" then it will display the value, but i want the variable to store the value and display it outside the function can I know how can I do that?
I think the problem is that the function "reff.on" is an event function and what happens is that you print the n1 variable before the function is executed.
Therefore, you will only be able to access this data from within the function, Or you will build a specific function to verify that the previous function has been executed before you print the n1.
Notice how they only access the information from within the function in the Firebase documentation : https://firebase.google.com/docs/reference/js/v8/firebase.database.Reference#parameters
This question already has answers here:
How do I return the response from an asynchronous call?
(41 answers)
Closed 5 years ago.
How do I access a variable inside a callback without reassigning it to a variable first?
For example, the following code works:
let volume = 0;
loudness.getVolume((err, vol) => {
volume = vol;
});
But what if I wanted it to be assignable directly to a const. The following returns undefined:
const volume = loudness.getVolume((err, vol) => vol));
The short answer is you can not. The callback function exists in it's own scope isolated from the rest of the code. The only way to extract that info to be used in the rest of the code is to assign it to a variable that exists in a parent scope.
In simple terms do what you did in your first example.
This question already has answers here:
Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference
(7 answers)
Closed 6 years ago.
I would like to assign value to the variable IMLoginReq inside a ProtoBuf load function, but its not working, can anyone help?
var IMLoginReq;
protobuf.load("./pb/IM.Login.proto", (err, root) => {
// Obtain a message type
IMLoginReq = root.lookup("IM.Login.IMLoginReq");
console.log(IMLoginReq);//<== is not undefined
});
console.log(IMLoginReq);//<== is undefined
The load() method is asynchronous. As such the console.log at the end will happen before the load finishes. Instead of trying to treat this as procedural logic, which it is not, you should instead use the IMLoginReq inside the success method that you have.
Thats because you are trying to call it before its loaded. You should have a callback function like success so it will be there.
You can also use promises by omitting the callback:
protobuf.load("awesome.proto")
.then(function(root) {
...
});
This question already has answers here:
Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference
(7 answers)
Closed 6 years ago.
I am setting chrome.local variables in pop.js but unable to retrieve them in content.js
popup.js
chrome.storage.local.set('TITLE',title);
content.js
var title = null;
$(".class").each(function () {
chrome.storage.local.get('TITLE', function (result) {
title = result.TITLE;
console.log('inside'+title);//prints value
});
}
console.log(title);//returns null;
It returns title as null
Chrome Console outputs as:
outside: null
content.js:42 insideJava: A Beginner's Guide, Sixth Edition
chrome.storage.local.get is an asynchronous call, which means when you call console.log(title);, callback of chrome.storage.local.get has not been executed, then title remains null. You should put your logic inside the callback.
This question already has answers here:
Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference
(7 answers)
Closed 7 years ago.
I have a callback function and within that, a for loop containing another calllback.
I am struggling with understanding the variable scope. I need to access the out variable throughout the nested structure:
var out = {"foo":123};
persistence.getAllApiKeys(function(err, allKeys){
for (var prop in allKeys) {
out = {"baz":456};
persistence.getApiKeyValue("test", function(err2, value) {
out = {"success":true}; // <--does not update
});
}
console.log(out);
})
Outputs:
{ baz: 456 }
How can I access the out variable inside the final callback? i.e. set it to "success":true?
Classic aysnc.
console.log is executed before the callback for getApiKeyValue. Put the console inside the callback and you will see what's wrong.