javascript - `$.post` 有多少是阻塞的?

标签 javascript jquery

我有一个表单收集一些信息,我使用 $.post 来处理 ajax 请求。

$.post(ajaxEndpoint, dataObject)
  .done(function (response) {
    if (response.status === 'success') {
      // Send data to process asynchronously
      otherApiCall(response.otherData);

      // Redirect to the thank you page
      window.location.replace(getThankYouUrl());
    }
  });

function otherApiCall (data) {
  $.post(otherAjaxEndpoint, data);
}

据我猜测,我遇到的问题是,在进行其他 POST 之前,它重定向得太快。但我确实希望它异步POST然后重定向,这样用户就不会等待第二个响应。我不在乎第二次响应的结果是什么。我只想完成第一个响应,发送第二个 POST 并立即重定向,以减少用户查看微调器的次数。

我的第二个 $.post 似乎没有在重定向发生之前及时发送,因为我从未从中获取数据。如果我注释掉重定向,我就会这样做。我不想等到第二个 done() 但我不知道如何不这样做。我不理解和/或做错了什么?

其他信息/更新

确实可以控制服务器端处理。我可以在这方面做些什么来快速获得响应,而无需等待其余处理完成吗?

最佳答案

您可能想让第二篇文章完成,然后进行重定向。

一个简单的修复方法是从第二个方法返回 $.post 并使用第二个调用的 done() 来管理重定向

$.post(ajaxEndpoint, dataObject)
  .done(function (response) {
    if (response.status === 'success') {
      // Send data to process asynchronously
      otherApiCall(response.otherData).done(function(){
          // second post call now complete
          // Redirect to the thank you page
          window.location.replace(getThankYouUrl());
      }).fail(function(){
           // handle failed response
       });      
    }
  });

function otherApiCall (data) {
  return $.post(otherAjaxEndpoint, data);
}

关于javascript - `$.post` 有多少是阻塞的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33557920/

相关文章:

javascript - Node.js : graceful restarts and server uptime, 方法?

javascript - 使用 KendoUI 折线图,如何使数据标记(点)成为纯色?

javascript - 如何在循环中使用 jQuery 和带参数的 JSON 生成动态 HTML?

Javascript 使用换行符将文本附加到文本区域

javascript - 电子邮件验证Javascript+RegEx,但排除某些域

javascript - 根据数字排序顺序更新自动重新排列 HTML 列表

javascript - 如何替换 meteor 集合查询中排序字段的键?

javascript - 多个自动淡入/淡出循环在多个 div 中

php - ajax登录问题

javascript - 使页眉和页脚文件包含在多个 html 页面中