如何在函数执行之间添加延迟

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