使用setTimeout单击

Delay Javascript button onClick using setTimeout

本文关键字:单击 setTimeout 使用      更新时间:2023-09-26

我有一个延迟按钮点击的问题。我已经通过stackoverflow搜索过了,我找到了几个答案,setTimeout很容易,但我不能让它在我正在做的工作中工作。下面是代码示例:

AJAX在提交按钮上向数据库提交数据,单击

<script>
  $(function () {
    $('form').on('submit', function (e) {
      $.ajax({
        type: 'post',
        url: 'post.php',
        data: $('form').serialize(),
      });
      e.preventDefault();
    });
  });
</script>
<<p> 推杆式代码/strong>
<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>
<<p> HTML按钮/strong>
<input id="submit" name="submit" type="submit" value="Submit" onclick="addMEM()"><br>
<button id="broadcast">Broadcast</button>

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

点击Submit ajax脚本将数据推送到post。php然后提交到数据库。通过相同的Submit点击,push代码被触发,最终将提交的数据从数据库中提取出来,并将其广播给连接的每个人。

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

我把setTimeout放在我能想到的任何地方,只是不能延迟pushher代码。有什么建议吗?如果Submit和Broadcast按钮延迟,也没关系。如果点击Submit会延迟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);
});