Sunday 7 January 2018

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

itemprop="text">



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...