使用JQuery的when方法执行延迟对象,在done方法中返回的值不是按顺序

使用JQuery的when方法执行延迟对象,在done方法中返回的值不是按顺序

//加载投票问题
var d1 = $.getJSON(url, data);
//加载用户评论
var d2 = $.getJSON(url2, data2);

// 以下代码会产生延迟加载结果顺序出错的问题
$.when(d1, d2)
.done(function(r1, r2){
  console.log(r1);
  console.log(r2);
  createVoteContent(r1);
  createVoteCommit(r2);
})
.fail(function(){
  //提示加载失败
  alert('加载失败...');
});

上述代码的执行结果,r1和r2,并不一定都是d1和d2的返回结果
r1和r2有可能都会等于d2的返回结果,但是按照官网文档的说法,使用when函数,如果有多个延迟对象,那么在所有对象都成功后才会执行done方法,并且返回值是按延迟对象的顺序来的:

clipboard.png

阅读 6.2k
1 个回答

已经解决该问题了,Jquery官网上的demo和用法是没有问题的,是我们这边后端在controller中使用了静态方法导致的冲突

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题