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中进入。