This question already has answers here:
How do I return the response from an asynchronous call?
(38个答案)
2年前关闭。
长话短说。我正在尝试学习JavaScript。我现在已经连续搜索了大约4个小时。而且我找不到我当前问题的答案,所以我假设我正在以错误的方式看待这个问题。
我正在尝试创建一个slackbot。该机器人已连接,可以查找消息,以便该部件正常工作。
我已经(尝试)创建了一个函数,该函数根据我设置的名称获取每个新消息的userID。在我看来,该函数返回userID,并且我可以稍后在代码中检查userID是否在message.text,如果正在做某事。
我假设它与.then函数有关。我什至可以从那个.then函数返回数据吗?或者您可以只在该函数中使用该数据。
我有几个返回函数,因为我想尽可能地从任何地方返回它。
(38个答案)
2年前关闭。
长话短说。我正在尝试学习JavaScript。我现在已经连续搜索了大约4个小时。而且我找不到我当前问题的答案,所以我假设我正在以错误的方式看待这个问题。
我正在尝试创建一个slackbot。该机器人已连接,可以查找消息,以便该部件正常工作。
我已经(尝试)创建了一个函数,该函数根据我设置的名称获取每个新消息的userID。在我看来,该函数返回userID,并且我可以稍后在代码中检查userID是否在message.text,如果正在做某事。
我假设它与.then函数有关。我什至可以从那个.then函数返回数据吗?或者您可以只在该函数中使用该数据。
我有几个返回函数,因为我想尽可能地从任何地方返回它。
function getuserid(botname){
var id = ''
var getbotid = bot.getUsers();
getbotid.then(function(value){
for(var i=0;i<value.members.length;i++){
if(value.members[i].name == botname){
id = value.members[i].id
console.log(id);//this logs what i want.
return id
}
} return id
})
return id
}
var botid = getuserid('jokester');
console.log(botid);
最佳答案
我不确定,但是根据我的经验,如果您返回getbotid()
,那么实际上您将返回一个诺言,就可以使用它。
function getuserid(botname){
var id = ''
//************Here I return getbotid
return bot.getUsers().then(function(value){
for(var i=0;i<value.members.length;i++){
if(value.members[i].name == botname){
id = value.members[i].id
console.log(id);//this logs what i want.
return id
}
} return id
})
return id
}
//Now you can use it
getuserid('jokester').then(id => console.log(botid));