嵌套Ajax调用而不锁定浏览器

时间:2016-03-29 15:04:56

标签: javascript jquery ajax

我正在对CMS进行Ajax调用,但是对于从我的Ajax调用返回的每个值('site'),我需要列出具有访问权限的用户('shares')。我在下面转载了我的代码模板。 (我希望我没有通过剥离专有的东西来在语法上打破它。)

代码实际上有效。只是因为我必须在子调用中添加'false'的'synch',浏览器才会锁定,直到一切都完成。我编码的任何DOM操作都不会发生,直到最后一个'site'被迭代。 (我只能通过使用Chrome开发工具看到任何)。

如果我没有同步参数,则外循环迭代太快,内部循环不能跟上。

如果有更好的解决方案,请有人告诉我。

非常感谢。

<script>

var mySites
var myShares

mySites = blah({
  path:   'aa/bb/cc/',
  url:        '',
  data:   { method: 'sites.search', limit: 600} 
});   

mySites.done(function(data) { 
  var OutSites = data;  
  console.log(data);  
  var Sites = OutSites.data.sites;
  $.each(Sites, function(key, value) {
    console.log(key, value.uuid, value.description);

    myShares = blah({
      path:         'dd/ee/ff',
      url:        '',
      async: false,
      data:  { method: 'share.getList', target: value.uuid} 
    });


    myShares.done(function(data) { 
      var OutShares = data;
      var ShareUsers = OutShares.data.user;
      if (typeof ShareUsers !== 'undefined') {  
        $.each(ShareUsers, function(key, value) {
          consol.log(key, value.uuid);   
        });
      }    
    });

  });      
});
</script>

0 个答案:

没有答案