【问题标题】:Getting data from nested .then function [duplicate]从嵌套的.then函数中获取数据[重复]
【发布时间】:2018-12-31 15:23:07
【问题描述】:

长话短说。我正在尝试学习javascript。我现在已经连续搜索了大约 4 个小时。而且我找不到当前问题的答案,所以我假设我看错了。

我正在尝试创建一个 slackbot。机器人已连接,并且可以查找消息,以便该部分正常工作。

我(试图)创建(编辑)一个函数,它根据我设置的名称获取每条新消息的用户 ID。在我看来,这个函数返回用户 ID,我可以稍后在代码中检查是否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);

【问题讨论】:

标签: javascript node.js


【解决方案1】:

我不确定,但根据我的经验,如果您返回 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));

【讨论】:

  • @Smoearn 你能试试我更新的答案,然后插入一些log 来获取价值和其他东西,然后更新你的问题。谢谢。
  • getuserid('jokester').then(botid => console.log(botid));打印出我想要的。但我真的想将它存储在一个变量中,以便我以后可以使用它来进行检查@MBehtemam
猜你喜欢
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 2011-06-08
  • 2015-07-20
  • 1970-01-01
相关资源
最近更新 更多