繁体   English   中英

使用setTimeout延迟Javascript按钮onClick

[英]Delay Javascript button onClick using setTimeout

我在延迟按钮点击时遇到问题。 我已经搜索了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()”用于另一个脚本。 这是一个非常繁忙的按钮。

所以发生的事情是我单击Submit并且ajax脚本将数据推送到post.php,后者将其提交到数据库。 使用相同的提交单击触发推送器代码,该代码最终将提交的数据从数据库中拉回并将其广播给已连接的每个人。

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

我把setTimeout放在我想到的任何地方,只是无法延迟Pusher代码。 有什么建议么? 如果提交和广播按钮被延迟,则可以。 单击Submit延迟AJAX代码或onclick = addMEM()是不行的

很抱歉让这么复杂。 这是一个长项目的最后一步,如果我可以使这个工作,那么这里的所有CSS,数据输入和数学都是如此。

我建议将成功回调传递给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);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM