簡體   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