防止两个函数运行异步JavaScript
我目前正在开发一个解决问题的聊天机器人。所以我写了我的代码,但是有两个函数是异步运行的。因此,我希望我的代码首先运行一个函数,检查用户输入中的值是否等于数组中的值。然后它会发送一条信息,询问问题所在的教室。然后,我希望我的代码运行第二个函数,在用户输入中循环查找教室名称,然后将包含该教室的消息发送给问题解决者 但我代码中的问题是,当我提到教室时,这两个函数同时发送消息,例如: 用户输入:“我的智能板有问题” 聊天机器人的第一条信息:“很抱歉,我没听懂。请按以下方式书写课堂:L***。” 聊天机器人的第二条信息:“好的……你现在的问题是在哪个教室?” 这不是我想要的。我想要的是这样的: 用户输入:“我的智能板有问题” 聊天机器人信息:“好的……你现在的问题是在哪个教室?” 用户输入:“L108” 但如果教室不在教室阵列中,则聊天机器人会发送消息:“/strong>很抱歉,我不明白。请按以下方式书写教室:L***。” 我试图做的是调用第一个函数中的第二个函数,但没有成功,或者可能是我做错了;)。我的代码如下所示:防止两个函数运行异步JavaScript,javascript,function,asynchronous,visual-studio-code,Javascript,Function,Asynchronous,Visual Studio Code,我目前正在开发一个解决问题的聊天机器人。所以我写了我的代码,但是有两个函数是异步运行的。因此,我希望我的代码首先运行一个函数,检查用户输入中的值是否等于数组中的值。然后它会发送一条信息,询问问题所在的教室。然后,我希望我的代码运行第二个函数,在用户输入中循环查找教室名称,然后将包含该教室的消息发送给问题解决者 但我代码中的问题是,当我提到教室时,这两个函数同时发送消息,例如: 用户输入:“我的智能板有问题” 聊天机器人的第一条信息:“很抱歉,我没听懂。请按以下方式书写课堂: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()的响应是对用户输入的响应