如何在函数执行之间添加延迟
How to add a delay between function excutions
我正在用 socket.io 创建这个小聊天框,我想知道如何在消息发送之间添加延迟以防止垃圾邮件等。
这是我发送消息的代码。
// Sends a chat message
const sendMessage = () => {
let message = $inputMessage.val();
// Prevent markup from being injected into the message
message = cleanInput(message);
// if there is a non-empty message and a socket connection
if (message && connected) {
$inputMessage.val("");
addChatMessage({ username, message });
// tell server to execute 'new message' and send along one parameter
socket.emit("new message", message);
}
};
尝试使用 setTimeout 来执行您的主要功能。 Javascript 不支持任何延迟,因为它是单线程的。
您可以添加一个变量来跟踪最近发送消息的时间,并将该变量与当前时间进行比较;差价太小拒发
最小示例:
window.lastMessageTime = 0;
function sendMessage(message) {
if(Date.now() - window.lastMessageTime < 5000)
return false;
window.lastMessageTime = Date.now();
// Proceed
};
我正在用 socket.io 创建这个小聊天框,我想知道如何在消息发送之间添加延迟以防止垃圾邮件等。
这是我发送消息的代码。
// Sends a chat message
const sendMessage = () => {
let message = $inputMessage.val();
// Prevent markup from being injected into the message
message = cleanInput(message);
// if there is a non-empty message and a socket connection
if (message && connected) {
$inputMessage.val("");
addChatMessage({ username, message });
// tell server to execute 'new message' and send along one parameter
socket.emit("new message", message);
}
};
尝试使用 setTimeout 来执行您的主要功能。 Javascript 不支持任何延迟,因为它是单线程的。
您可以添加一个变量来跟踪最近发送消息的时间,并将该变量与当前时间进行比较;差价太小拒发
最小示例:
window.lastMessageTime = 0;
function sendMessage(message) {
if(Date.now() - window.lastMessageTime < 5000)
return false;
window.lastMessageTime = Date.now();
// Proceed
};