我对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之外,没有打印任何内容,因为变量没有保存。我不知道为什么。
任何帮助都将非常感谢,因为这是对我的工作在大学!谢谢!
因为getIdFromUsername是异步的,所以在存储ID之前运行您向存储的ID发送消息的最后一行。
像getIdFromUsername这样的异步函数不会阻止以下代码行的运行。如果希望在返回ID之后发生,则需要进入then
回调。
返回
传递给的函数中的值。然后()
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);
});
首先我想问一下这是不是可能的,设置值为全局变量在异步函数或承诺? 如果是,那么为什么每个可用的教程/网站都在教程中使用console.log(结果),但从来没有使用它将其赋值给variable。 例如:
问题内容: 我正在开发Spotify应用。我可以登录并获取我的令牌。我的问题是我无法在方法外访问变量。在这种情况下 这是我的方法: 如您所见,我在console.log中记录了名称,并在控制台中获得了正确的值。但是仅在我调用即使返回names变量的情况下得到的函数的情况下,它也可以在这里使用。 我需要那个变量。 问题答案: 没有返回任何东西。你需要从返回的承诺,然后当你回到内 即 它是由外部函数返
问题内容: 我尝试使用下面的代码将命令输出存储在数组中,但是在“ while循环”之后无法打印数组元素,这意味着在代码的最后一行中,我的代码是否存在任何问题? 问题答案: 问题是您在 子 外壳中添加了元素。详细说明: 导致在子shell中执行,这是一个单独的执行环境。这意味着设置的变量不适用于 当前 外壳,其执行环境不会受到影响。您可以改为使用流程替代来实现相同目的: 请注意,不建议解析。尝试使用
我有一个Projects表,包含三列:Task_ID、Start_Date和end_date。当上一行的End_Date和当前行的Start_Date之间的差值不等于零时,我正在尝试两次递增一个名为count的变量,但它对每一行都是递增的。那么,如何基于大小写when-then语句在mysql中更改变量的值呢? SQL查询- 输出- 预期产出-
我是新的macOS。我知道这个问题以前被问过很多,但是所有提到的方法都不适合我。我也试过https://www.youtube.com/watch?v=_gdpclEE-kA一个,但是它显示了一个错误,比如没有这样的文件或目录。