首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建“最后一场胜利”jQuery队列?

如何构建“最后一场胜利”jQuery队列?
EN

Stack Overflow用户
提问于 2012-07-03 01:32:37
回答 2查看 162关注 0票数 2

假设页面上有三个元素:

  • 接受数字联系人ID的文本框。
  • 单击该按钮时,将向服务器发出Ajax请求,以获取输入到textbox中的联系人ID的联系人信息。
  • 一个div,它显示从服务器获取的联系人信息。

现在再假设两件事:

  • 预期从服务器的往返将需要5秒。
  • 如果在5秒延迟期间,用户向textbox输入不同的数字,然后单击按钮,则web页面应该忽略第一个ajax结果,并尊重第二个Ajax结果(即最近的Ajax请求)。

我的问题是:

  • 我如何实现jQuery队列中的“最后一个胜利”,就像我所描述的那样?
    • 我会使用延迟对象承诺对象来帮助我解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-03 01:38:41

你只需在成功的回调中处理好这一切。您在回调中签入的第一件事是是否输入了新信息,如果输入了新信息,则让新信息获胜。否则,请继续执行请求的结果。

如果必要的话,设置标志应该是相当容易的。每当发送新请求时,都会悬挂该标志。在成功的回调中使用它。

票数 2
EN

Stack Overflow用户

发布于 2012-07-03 01:46:50

代码语言:javascript
复制
ResponsibleObject = {
  lastAjaxId: 0,
  onChangeSomething: function() {
    var ajaxObject = $.ajax({
       // some settings
       success:this.ajaxCallback
    });
    ajaxObject.__id = ++this.lastAjaxId;
  },
  ajaxCallback: function(data, textStatus, jqXHR) {
    if (jqXHR.__id != ResponsibleObject.lastAjaxId) {
        return false;
    }
    // put your code here
  }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11303375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档