我必須進行3個調用,完成後將返回一個對象。前兩個調用是獨立的,但是第三個調用需要從前兩個調用之一返回一個數據值作爲參數之一。下面的圖形搞砸了,我試圖避免使第三個電話在我打電話myFunction的地方,任何想法如何,我可以解決這個問題
function myFunction(){
var promise1 = $http({method: 'GET', url: 'a/pi-o-url', cache: 'true'});
var promise2 = $http({method: 'GET', url: '/api-v-url', cache: 'true'});
var myNewObj = {obj1:{}, obj2: {}, obj3: {}};
$q.all([promise1, promise2])
//i'd like to somehow make all the calls in one single function (within myFunction and juts return a single object)
}
我不想做的事:
myFunction()
.then(function(data){
myNewObj.obj1 = data[0];
myNewObj.obj2 = data[1];
myService(data[0].id).then(function(moreData){
myNewObj.obj3 = moreData;
return moreData;
})
任何想法?
正是你想要什麼?您需要在需要解決之前呼叫數據的地方再打一次電話? –
我希望能夠調用myFunction並返回一個對象。該對象由來自3個不同調用的數據組成。其中兩個調用是獨立的,我可以使用$ q.all,但是對於第三個調用,我需要將其作爲參數,前兩個調用 – eagleEye
之一返回的數據值,如果您依賴於異步執行,那麼您不能直接返回數據,你必須返回一個承諾。否則,您可以返回一個引用並在稍後填充,請參閱'$ resource' –