手动解决jQuery延迟?

时间:2015-08-04 21:07:59

标签: javascript jquery ajax deferred

我认为问题标题并不是我想要的,但总结起来有点复杂。我将尝试解释:

我正在开发一个需要用户登录的界面,登录令牌在设定的一段时间后过期,并通过ajax执行操作。最终结果是用户可以因为他们的令牌过期而被注销,然后他们尝试执行ajax请求,因为他们没有登录而无法工作。

这就是我试图打击它的方式:

$(document).ajaxError(function(e, jqXHR, options) {
  if (jqXHR.status == 403) {
    doLogin(function() {
      $.ajax(options);
    });
  }
});

假设doLogin记录用户,然后调用回调。第二次调用$ .ajax重试ajax请求(现在用户已登录),它有望成功。

现在,这是一个棘手的部分 - 如果使用jQuery提供的回调机制,但不使用延迟,它可以工作。所以这有效:

$.get('/something', function() {
  // got it!
});

这有效:

$.ajax('/something', {
  success: function() {
    // got it!
  }
});

但这不是:

$.get('/something').done(function() {
  // got it!
});

我有什么想法可以做到这一点?

0 个答案:

没有答案