Saturday 10 November 2018

javascript - Variables are not being set inside the .then() part of a Promise




I'm pretty new to JavaScript and node.js and so being thrown into Promises is pretty daunting when it is required for my bot to function.



var storedUserID;
ROBLOX.getIdFromUsername(accountArg).then(function(userID) {
message.reply("your id is " + userID);
storedUserID = userID;
});

message.reply(storedUserID);


This is essentially what I have written out, it creates a variable called 'storedUserID' which I would like to update later. I am trying to update it in the Promise but it does not seem to work.



In the code, there is message.reply("your id is " + userID); which works as expected. It will print out to a user 'your id is [NUMBER]' so I know userID is not null.



However, when I run message.reply(storedUserID); outside of the Promise, nothing is printed as the variable is not saved. I am not sure why.



Any help would be appreciated as this is going towards my work in college!

Thank you!


Answer



return the value at function passed to .then()



var storedUserID = ROBLOX.getIdFromUsername(accountArg)
.then(function(userID) {
return userID;
});



you can then use or change the Promise value when necessary



storedUserID = storedUserID.then(id) {
return /* change value of Promise `storedUserID` here */
});


access and pass the value to message.reply() within .then()



storedUserID.then(function(id) {

message.reply(id);
});


or



var storedUserID = ROBLOX.getIdFromUsername(accountArg);
// later in code
storedUserID.then(function(id) {
message.reply(id);

});

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...