variables不是在Promise的.then()部分中设置的

我对JavaScript和node.js非常陌生,所以当我的机器人需要运行时,投入Promises是相当艰巨的。

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

这实际上是我写出来的,它创build了一个名为' storedUserID '的variables,我想稍后更新。 我试图更新它在承诺,但它似乎并没有工作。

在代码中,有message.reply(“你的id是”+ userID); 按预期工作。 它会打印出一个用户'你的ID是[NUMBER]'所以我知道userID不为空。

但是,当我运行message.reply(storedUserID); 在Promise外,没有任何东西被打印,因为variables没有保存。 我不知道为什么。

任何帮助将不胜感激,因为这是我的大学工作! 谢谢!

return传递给.then()函数的值

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

您可以在必要时使用或更改Promise

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

访问并将值传递给message.reply()中的message.reply() .then()

 storedUserID.then(function(id) { message.reply(id); }); 

要么

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

由于getIdFromUsername是asynchronous的,因此在存储ID之前,将运行message.reply存储的ID的最后一行。

像getIdFromUsername这样的asynchronous函数不会停止运行以下代码行。 如果您希望在返回ID之后发生这种情况,则需要在callback中进入。