我对JavaScript和Node.js还是个新手,所以当我的机器人需要它才能正常工作时,被扔进Promissions是相当令人畏惧的。
var storedUserID;
ROBLOX.getIdFromUsername(accountArg).then(function(userID) {
message.reply("your id is " + userID);
storedUserID = userID;
});
message.reply(storedUserID);
这基本上是我写出来的,它创建了一个名为'stored userid'的变量,我想稍后更新该变量。我试图更新它的承诺,但它似乎没有工作。
在代码中,有message.reply(“your id is”+userID);它可以按照预期工作。它将打印给一个用户'your id is[NUMBER]',这样我就知道userID不是空的。
但是,当我运行message.reply(storedUserID);在Promise之外,没有打印任何内容,因为变量没有保存。我不知道为什么。
任何帮助都将非常感谢,因为这是对我的工作在大学!谢谢!
返回
传递给的函数中的值。然后()
var storedUserID = ROBLOX.getIdFromUsername(accountArg)
.then(function(userID) {
return userID;
});
然后,您可以在必要时使用或更改promise
值
storedUserID = storedUserID.then(id) {
return /* change value of Promise `storedUserID` here */
});
访问中的
消息并将该值传递给
消息。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是异步的,所以在存储ID之前运行您向存储的ID发送消息的最后一行。
像getIdFromUsername这样的异步函数不会阻止以下代码行的运行。如果希望在返回ID之后发生,则需要进入then
回调。