Javascript 多个Js请求的同步

Javascript 多个Js请求的同步,javascript,angularjs,asynchronous,promise,ngresource,Javascript,Angularjs,Asynchronous,Promise,Ngresource,我在尝试同步AngularJS中的多个异步请求时遇到一些问题。 我要解释我拥有什么和我需要什么 用户有许多站点 每个站点都有许多订阅 每个站点都有许多事务 每个事务都与订阅相关联 我通过第三方API获取订阅和事务。它们中的每一个都返回具有关联Id的元素和数组。 因此,我需要对每个数组的每个元素发出请求,并将这两个结果关联起来 我不知道该怎么办,也不知道该怎么办。 任何帮助都将不胜感激 $q.all([ PaymentService.getTransactions(profile.pa

我在尝试同步AngularJS中的多个异步请求时遇到一些问题。 我要解释我拥有什么和我需要什么

  • 用户有许多站点
  • 每个站点都有许多订阅
  • 每个站点都有许多事务
  • 每个事务都与订阅相关联
我通过第三方API获取订阅和事务。它们中的每一个都返回具有关联Id的元素和数组。 因此,我需要对每个数组的每个元素发出请求,并将这两个结果关联起来

我不知道该怎么办,也不知道该怎么办。 任何帮助都将不胜感激

$q.all([
    PaymentService.getTransactions(profile.payment.account_code),
    SiteService.getAll(),
    PaymentService.getUserSubscriptions(profile.payment.account_code)
  ]).then(function (data) {
    var transactions = data[0];
    var user_sites = data[1];
    var user_subscriptions = data[2];
    // returns site-by-site
    angular.forEach(user_sites, function (site) {
      SiteService.loadSite(site.$value).then(function (loaded_site) {
        loaded_site.transactions = [];
        loaded_site.subscriptions = [];
        angular.forEach(user_subscriptions, function (subscription) {
          console.log('SUBSCRIPTION: ', subscription);
          if ( subscription.uuid === loaded_site.recurly_subscription_uuid ) {
            loaded_site.subscriptions.push(subscription);
          }
        });
        angular.forEach(transactions, function (transaction) {
          if ( transaction.subscription ) {
            if ( getSubscriptionId(transaction.subscription.$.href) === loaded_site.recurly_subscription_uuid ) {
              loaded_site.transactions.push(transaction);
            }
          }
        });
        $scope.sites.push(loaded_site);
      });
    });
  })

您可以重新应用
$q.all
技术:

$q.all([
    PaymentService.getTransactions(profile.payment.account_code),
    SiteService.getAll(),
    PaymentService.getUserSubscriptions(profile.payment.account_code)
  ]).then(function (data) {
    var transactions = data[0];
    var user_sites = data[1];
    var user_subscriptions = data[2];

    var promises = [];

    angular.forEach(user_sites, function (site) {
      promises.push(SiteService.loadSite(site.$value));
    });


    $q.all(promises).then(function(loaded_sites) {
      angular.forEach(loaded_sites, funciton(loaded_site) {

        loaded_site.transactions = [];
        loaded_site.subscriptions = [];


        angular.forEach(user_subscriptions, function (subscription) {
          console.log('SUBSCRIPTION: ', subscription);
          if ( subscription.uuid === loaded_site.recurly_subscription_uuid ) {
            loaded_site.subscriptions.push(subscription);
          }
        });

        angular.forEach(transactions, function (transaction) {
          if ( transaction.subscription ) {
            if ( getSubscriptionId(transaction.subscription.$.href) === loaded_site.recurly_subscription_uuid ) {
              loaded_site.transactions.push(transaction);
            }
          }
        });

        $scope.sites.push(loaded_site);

      });

     });

  });

你有什么样的“问题”呢?主要问题是,我只是有每个对象的UUID,我需要通过http检索这些对象,然后在它们之间进行某种合并以建立关联,我不知道如何实现这一点,或者如何同步这些http调用