javascript - 防止两个函数异步运行 - JavaScript
问题描述
我目前正在开发一个可以解决问题的聊天机器人。所以我已经编写了我的代码,但是有两个函数异步运行。所以我想要的是我的代码首先运行一个函数来检查用户输入中的值是否等于我的数组中的值。然后它会发送一条消息,询问问题所在的教室。然后我希望我的代码运行第二个函数,循环遍历用户输入以查找课堂提及,然后将包含该课堂的消息发送给问题解决者。
但是我的代码中的问题是,当我提到教室时,这两个函数同时发送一条消息,例如:
用户输入:“我的智能板有问题”
聊天机器人第一条消息:“对不起,我没听懂。请把教室写成:L***。”
聊天机器人的第二条消息:“好的……你目前的问题在哪个教室?”
这不是我想要的。我想要的看起来像这样:
用户输入:“我的智能板有问题”
聊天机器人消息:“好的……您当前的问题在哪个教室?”
用户输入:“L108”
但是如果教室不在教室数组中,那么聊天机器人会发出消息:“对不起,我没听懂。请把教室写成: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);
};
关于如何解决这个问题的任何提示?提前致谢!
解决方案
推荐阅读
- azureservicebus - Azure 服务总线上的“辅助连接字符串”的用途是什么?
- notifications - OneM2M:通知 IN-CSE 在 MN-CSE 上创建的新资源
- json - 可选+可空值的Gson反序列化
- c++ - Armadillo C++ 配置检查
- python - fast_executemany=True 等效于 SQLALCHEMY 中的 Oracle
- java - 为什么我们不能只抛出 Exception/Throwable 而不是有多个异常
- pytorch - 使用卷积自动编码器在照片上添加微笑的问题
- html - 如何在左侧垂直对齐多个div,在右侧垂直对齐一个大div?
- android - 无法解析所有配置文件:':app:debugRuntimeClasspath'
- c++ - 如何使用 Miracl c++ 实现双线性配对