从函数中获取价值
Posted
技术标签:
【中文标题】从函数中获取价值【英文标题】:Getting value from a function 【发布时间】:2018-04-18 16:49:42 【问题描述】:我的代码有效,但不是我想要的。
不和谐的输出是Your name is undefined
。
我希望它是Your name is Boanak
。我需要它是从表中获得的值。
我正在使用一个不和谐的机器人,用户必须注册才能使用其中的一些命令。提前致谢!
getPlayerid = function(client, message, callback)
var member = message.member.user;
var db = new sqlite3.Database('Matches');
db.serialize(function()
db.all(`SELECT Name FROM Users WHERE Nameid =`+member.id, function(err, allRows)
if(err != null)
//console.log(err);
callback(0);
callback(allRows);
db.close();
);
);
z = getPlayerid(client, message, function(data)
)
message.channel.send(`Your Name is $z`);
【问题讨论】:
【参考方案1】:你的函数是异步的,所以你的变量不能在你的函数之外使用。
我认为你必须这样做:
var getPlayerid = function(client, message, callback)
var member = message.member.user;
var db = new sqlite3.Database('Matches');
db.serialize(function()
db.all(`SELECT Name FROM Users WHERE Nameid =`+member.id, function(err, allRows)
if(err)
//console.log(err);
callback(err, null);
else
callback(null, allRows);
db.close();
);
);
;
getPlayerid(client, message, function(err, data)
if (err)
console.log(err);
else if (data && data.length)
message.channel.send(`Your Name is $data[0].Name`);
else
message.channel.send("Your ID can't be found");
);
希望对你有帮助。
【讨论】:
我以前有过,但它没有满足我的需求 :(!我需要的是在这种情况下 (z) 中的变量是它从函数 (Boanak) 获得的值所以我可以稍后在 if 语句中使用它 我刚试了一下,它的工作效率为 50%。当未找到 Nameid 时,它不会在控制台中显示任何内容。我添加了一个,message.channel.send("Your ID cant be found")。【参考方案2】:message.channel.send(
Your Name is $z);
代码 id 中的问题在查询返回结果之前被执行,因此输出 undefined
。
getPlayerid = function(client, message, callback)
var member = message.member.user;
var db = new sqlite3.Database('Matches');
db.serialize(function()
db.all(`SELECT Name FROM Users WHERE Nameid =`+member.id,
function(err, allRows)
if(err != null)
//console.log(err);
callback(0);
callback(allRows);
db.close();
);
);
/* moved the statement in the callback function */
z = getPlayerid(client, message, function(data)
message.channel.send(`Your Name is $data`);
);
【讨论】:
有了这个我得到你的名字是[object Object]。我想要的是 z= Boanak ,这样我就可以在 if 语句中使用变量。以上是关于从函数中获取价值的主要内容,如果未能解决你的问题,请参考以下文章
无法从函数中获取价值,即使我有一个非常相似的函数。 - 颤振
如何从 Django 视图中获取价值到 Ajax 成功函数中