首页 > 解决方案 > 从嵌套的 .then 函数中获取数据

问题描述

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

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

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

标签: javascriptnode.js

解决方案


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

推荐阅读