javascript - 使用 setTimeout 延迟 Javascript 按钮 onClick

标签 javascript jquery pusher

我在延迟按钮点击时遇到问题。我已经通过 stackoverflow 进行了搜索,找到了几个答案,并且使用 setTimeout 很简单,但我无法让它在我正在做的事情中工作。这是代码示例:

AJAX 在单击提交按钮时将数据提交到数据库

<script>
  $(function () {
    $('form').on('submit', function (e) {
      $.ajax({
        type: 'post',
        url: 'post.php',
        data: $('form').serialize(),
      });
      e.preventDefault();
    });
  });
</script>

推送代码

<script>
    $(function() {

    var pusher = new Pusher('pusher')
    var activityChannel = pusher.subscribe('stream');
    var activityMonitor = new PusherActivityStreamer(activityChannel, "#current");

    var examples = new ExampleActivities(activityMonitor, pusher);

    $("#broadcast").click(function(){
        activityMonitor.sendActivity('broadcast');
    });
    $("#submit").click(function(){
        activityMonitor.sendActivity('submit');
    });
    });
</script>

HTML 按钮

<input id="submit" name="submit" type="submit" value="Submit" onclick="addMEM()"><br>
<button id="broadcast">Broadcast</button>

提交按钮上的 onclick="addMEM()"用于另一个脚本。这是一个非常繁忙的按钮。

所以发生的事情是我单击“提交”,ajax 脚本将数据推送到 post.php,后者将其提交到数据库。通过同样的“提交”单击,将触发 Pusher 代码,最终将提交的数据从数据库中拉回,并将其广播给连接的每个人。

我遇到的问题是 Submit 将数据提交到数据库,并触发同时从数据库中提取数据的 Pusher。 75% 的情况下,推送器代码会在提交提交之前尝试从数据库中提取数据。

我把 setTimeout 放在我能想到的任何地方,只是无法延迟 Pusher 代码。有什么建议么?如果“提交”和“广播”按钮出现延迟,也没关系。如果单击“提交”延迟了 AJAX 代码或 onclick=addMEM(),则不行

抱歉让事情变得如此复杂。这是一个漫长项目的最后一步,如果我能让这个工作正常运行,那么所有的 CSS、数据输入和数学都从这里开始。

最佳答案

我建议将 success 回调传递给 jQuery.ajax 方法,该方法将触发广播,如下所示:

$.ajax({
  type: 'post',
  url: 'post.php',
  data: $('form').serialize(),
  success: function () {
    activityMonitor && activityMonitor.sendActivity('broadcast');
  }
});

使用 setTimeout 的解决方案如下所示:

$("#broadcast").click(function(){
    setTimeout(function () { activityMonitor.sendActivity('broadcast') }, 2000);
});

关于javascript - 使用 setTimeout 延迟 Javascript 按钮 onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16639809/

相关文章:

jquery - 如何根据选中的复选框选择div中的最后一个元素

node.js - Laravel Echo 监听器未监听

php - Laravel Echo + VueJS 广播/授权问题

java - 将 Java 移植到 Javascript、Getter 和 Setter 与直接访问

javascript - 在隐藏元素中初始化 Disqus 注释会导致 FF 14.0.1 出现问题

javascript - 选择一个日期,然后将格式从 UNIX 转换为 UTC(yyyymmdd)

javascript - Highchart 钻取问题

javascript - 创建重复表单部分,删除字段值

javascript - Pusher 事件被触发两次

javascript - 如何让 jQuery 仅在按钮单击后执行而不是在页面加载时执行