Sunday, 17 July 2016

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

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...