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函数返回数据吗?或者您可以只在该函数中使用该数据。

我有几个返回函数,因为我想尽可能地从任何地方返回它。



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));

07-24 09:50
查看更多