在AngularJS 1.4中返回另一个$resource后,对$resource进行多次调用

在AngularJS 1.4中返回另一个$resource后,对$resource进行多次调用,angularjs,angularjs-resource,angular-promise,Angularjs,Angularjs Resource,Angular Promise,我目前正试图找到一种最佳实践,在返回第一个$resource的函数中多次调用$resource 考虑以下模式:我们有一个作者数据库,其中有书籍,有多个标签(sf、thriller、thriller等等) 这是进行多个嵌套调用的唯一方法吗 我在想一些更扁平、更具可读性的东西,比如一个有着连锁承诺的变通方法 任何想法都会受到欢迎,因为我无法找到更好的方法 问候 您可以使用$q拨打多个电话。它是调用多个调用的最佳方式,如果所有调用都是返回承诺,则结束 如果您是根据之前的结果调用多个调用,那么这是最好的

我目前正试图找到一种最佳实践,在返回第一个$resource的函数中多次调用$resource

考虑以下模式:我们有一个作者数据库,其中有书籍,有多个标签(sf、thriller、thriller等等)

这是进行多个嵌套调用的唯一方法吗

我在想一些更扁平、更具可读性的东西,比如一个有着连锁承诺的变通方法

任何想法都会受到欢迎,因为我无法找到更好的方法


问候

您可以使用$q拨打多个电话。它是调用多个调用的最佳方式,如果所有调用都是返回承诺,则结束

如果您是根据之前的结果调用多个调用,那么这是最好的方法

function httpCall()
{
     var promises=[];
      promises.push(yourhttpCall1())
     return $q.all(promises);
}

$q.all([httpCall]).then(function(result){});

您可以使用$q拨打多个电话。它是调用多个调用的最佳方式,如果所有调用都是返回承诺,则结束

如果您是根据之前的结果调用多个调用,那么这是最好的方法

function httpCall()
{
     var promises=[];
      promises.push(yourhttpCall1())
     return $q.all(promises);
}

$q.all([httpCall]).then(function(result){});

这里有一个可能的解决方案:如果您使用
$q.all
,但对于每个推送到数组的承诺,您都会添加一点“sub”-
。然后,
,您可以包装每个单独api调用的结果,并将其与下一个
处理程序需要使用的密钥(或任何其他内容)一起传递。然后,
-处理程序

我已尝试相当接近地镜像您的原始代码示例,但做了一些更改:

  • 我创建了一个小型mockApiService,但为了简单起见,我伪造了几个调用
  • 我已经用命名函数替换了内联
    。然后用命名函数替换了
    -处理程序,以更清楚地证明我们已经将链展平
  • 我正在使用
    angular.extend
    更新作用域上的json结构,该结构显示在
    
    
    
    {{results}json}
    
    这里有一个可能的解决方案:若您使用
    $q.all
    ,但对于每个推送到数组的承诺,您都会添加一点“sub”-
    。然后,
    ,您可以包装每个单独api调用的结果,并将其和下一个
    需要使用的密钥(或任何其他内容)一起传递。然后,
    -处理程序

    我已尝试相当接近地镜像您的原始代码示例,但做了一些更改:

    • 我创建了一个小型mockApiService,但为了简单起见,我伪造了几个调用
    • 我已经用命名函数替换了内联
      。然后用命名函数替换了
      -处理程序,以更清楚地证明我们已经将链展平
    • 我正在使用
      angular.extend
      更新作用域上的json结构,该结构显示在
      
      
      
      {{results}json}
      
      api是否返回包含“外键”的数据?也就是说,如果要将一组
      标记.getAll().$promise
      捆绑到一个数组中,并传递给
      $q.all([])
      ,则将得到一个解析结果数组,其顺序与添加承诺的顺序相同。但是,如果这些数组元素中的每个数据都没有包含一个外键来标识请求所针对的图书,那么如果您没有在闭包中嵌套和跟踪这些键,则可能仍然很难将结果与正确的图书正确关联……不幸的是,没有。库中没有外键。感谢您的回复。您的api是否返回包含“外键”的数据?也就是说,如果要将一组
      标记.getAll().$promise
      捆绑到一个数组中,并传递给
      $q.all([])
      ,则将得到一个解析结果数组,其顺序与添加承诺的顺序相同。但是,如果这些数组元素中的每个数据都没有包含一个外键来标识请求所针对的图书,那么如果您没有在闭包中嵌套和跟踪这些键,则可能仍然很难将结果与正确的图书正确关联……不幸的是,没有。库中没有外键。感谢您的回复。您的api是否返回包含“外键”的数据?也就是说,如果要将一组
      标记.getAll().$promise
      捆绑到一个数组中,并传递给
      $q.all([])
      ,则将得到一个解析结果数组,其顺序与添加承诺的顺序相同。但是,如果这些数组元素中的每个数据都没有包含一个外键来标识请求所针对的图书,那么如果您没有在闭包中嵌套和跟踪这些键,则可能仍然很难将结果与正确的图书正确关联……不幸的是,没有。库中没有外键。谢谢你的回复。实际上这是我试过的东西之一。但从语法上讲,$q.all并没有与最初的承诺联系在一起。我想知道是否有更好的方法来保持代码清晰,并将我所有的承诺都拴在一起。也许没有别的办法,这就是我为什么问的原因。事实上,这是我尝试过的事情之一。但从语法上讲,$q.all并没有与最初的承诺联系在一起。我想知道是否有更好的方法来保持代码清晰,并将我所有的承诺都拴在一起。也许没有别的办法,这就是我为什么问的原因。事实上,这是我尝试过的事情之一。但从语法上讲,$q.all并没有与最初的承诺联系在一起。我想知道是否有更好的方法来保持代码清晰,并将我所有的承诺都拴在一起。也许没有办法做不同的事情,这就是我问的原因。关于嵌套循环中的闭包,你可以在这里查看更多信息(尽管我没有以最强烈建议的方式解决它!):最后,这正是我在看到这个答案之前在脚本中所做的。感谢您的精确回复,我认为这是目前保持平稳的更好方法。关于嵌套循环中的闭包,您可以在这里查看更多信息(尽管我没有以最强烈建议的方式准确地解决它!):最后,这正是