防止两个函数运行异步JavaScript

防止两个函数运行异步JavaScript,javascript,function,asynchronous,visual-studio-code,Javascript,Function,Asynchronous,Visual Studio Code,我目前正在开发一个解决问题的聊天机器人。所以我写了我的代码,但是有两个函数是异步运行的。因此,我希望我的代码首先运行一个函数,检查用户输入中的值是否等于数组中的值。然后它会发送一条信息,询问问题所在的教室。然后,我希望我的代码运行第二个函数,在用户输入中循环查找教室名称,然后将包含该教室的消息发送给问题解决者 但我代码中的问题是,当我提到教室时,这两个函数同时发送消息,例如: 用户输入:“我的智能板有问题” 聊天机器人的第一条信息:“很抱歉,我没听懂。请按以下方式书写课堂:L***。” 聊天机器

我目前正在开发一个解决问题的聊天机器人。所以我写了我的代码,但是有两个函数是异步运行的。因此,我希望我的代码首先运行一个函数,检查用户输入中的值是否等于数组中的值。然后它会发送一条信息,询问问题所在的教室。然后,我希望我的代码运行第二个函数,在用户输入中循环查找教室名称,然后将包含该教室的消息发送给问题解决者

但我代码中的问题是,当我提到教室时,这两个函数同时发送消息,例如:

用户输入:“我的智能板有问题”

聊天机器人的第一条信息:“很抱歉,我没听懂。请按以下方式书写课堂:L***。”

聊天机器人的第二条信息:“好的……你现在的问题是在哪个教室?”

这不是我想要的。我想要的是这样的:

用户输入:“我的智能板有问题”

聊天机器人信息:“好的……你现在的问题是在哪个教室?”

用户输入:“L108”

但如果教室不在教室阵列中,则聊天机器人会发送消息:“/strong>很抱歉,我不明白。请按以下方式书写教室:L***。”

我试图做的是调用第一个函数中的第二个函数,但没有成功,或者可能是我做错了;)。我的代码如下所示:

bot.on('message', data => {
    if (data.type !== 'message' || data.subtype === 'bot_message') {
        return;
    }
    handleMessage(data.text);
    findClassroomMention(data.text);
    console.log(data)
});

var digibord =
    {
        name: ["digibord","smartboard","schoolbord"]
    };

function handleMessage(message) {
    digibord.name.forEach((name) => {
        if (name.includes(message)) {
            bericht();
            console.log(message);
        }
    });
}

function bericht() {
    const params = {
        icon_emoji: ':smiley:'
    }
    problem = "digibord"
    bot.postMessageToChannel('general', 'Okay...In what classroom is your current problem?',params);
};

var classrooms = 
    {
        L108: ["L108","108"],
        L208: ["L208","208"]
    };

function findClassroomMention(message) {    
    var found = false   
    for(var ClassroomId in classrooms) {
        for(var term of classrooms[ClassroomId]) {
            if(message.includes(term)) {
                found = ClassroomId;
                break;
            }
        }
        if (!found) {
            const params = {
                icon_emoji: ':smiley:'
            }
            bot.postMessageToChannel('general'," I'm sorry but I didn't understand it. Please write the classroom as the following: L***.", params);
            break;
        }
        if (found) {
            notifyProblemSolver(ClassroomId);
            break;
        }
    }
    return found
};

function notifyProblemSolver(ClassroomId) {
    const params = {
        icon_emoji: ':smiley:'
    }
    bot.postMessageToChannel('caris','We have a problem with '+ problem + ' in ' + ClassroomId, params);
};

关于如何解决这个问题有什么建议吗?提前谢谢

我不太明白。当用户第一次报告问题时,handleMessage()将完全执行,并以“Okay…In what…”消息响应,第二个方法FindClassRoomAttention()在中间中断时不会完全执行。那么,第二个方法findclassroomTitle()的响应是如何作为用户第一条消息的响应发送的呢?第二个方法findclassroomTitle()的响应是对用户输入的响应