Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Variables are not being set inside the .then() part of a Promise [duplicate]

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!

like image 353
WelpNathan Avatar asked Nov 04 '17 16:11

WelpNathan


1 Answers

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);
});
like image 138
guest271314 Avatar answered Nov 15 '22 05:11

guest271314