2017-04-12 50 views
0

我的控制器是通过调用一个函数,它执行以下操作激活:Restangular:解决复杂的嵌套请求

  • 获取汽车“/ API /车/:身份证”
    • 然后,让人们在汽车(每个人在车上对象,得到“/ API /人/:身份证”
      • 然后,得到该人的孩子(每个孩子的人,得到“/ API /孩子/:身份证”)
  • 最后,与所有已抓取上述数据返回对象。

这种逻辑是复杂的,但与服务器的当前的架构,我只能链这些结合在一起,去一步步的时间,因为我不知道是谁之前,让这款车的信息是在车上做。我们没有在服务器上设置任何过滤器,所以我们一次只有一个对象。

我想将此逻辑移至工厂,服务或提供者。在初始化控制器后,服务中存储的数据应该可以通过注入来访问。

有没有人曾与这样的问题的经验,并找到一个好的解决办法?我将如何返回一个承诺,在完成所有这些请求后解决,即使它们处于嵌套循环中?

+0

**我怎么会回到它解决毕竟这些要求的提出,即使他们在嵌套循环承诺**的常规方式(不代码是这样的最好我可以告诉你) –

+0

随时留下一个例子,或让其他人回答,以便社区可以看到。像这样的评论不会帮助那些可能在未来寻找这些问题的人。 –

+0

“评论喜欢这些”你可以像你这样表明,没有代码,你希望有人为你 –

回答

0

我一直在使用目前的答案是:

从控制器我调用一个函数在我的车服务。这个函数,getFullCar(),看起来像:

function getFullCar(id) { 
    var defer = $q.defer(); // set up promise 
    Car.get(id).then(carSuccess, carError); 
    return defer.promise; // promise that is being returned 

    ... // more nested get requests 

    // after every load I call a function checkLoaded() 
    function checkLoaded() { 
    if (//check variables are loaded) { 
     defer.resolve(// data to retun); 
    } 
    } 

}