其實,這個問題可以簡化爲「返回一個$ http或Restangular調用結果的承諾」。我的目標是有一個承諾對象時解決的$ HTTP調用完成後:
var deferredCall= $q.defer();
那麼這是從呼叫解決:
$http.get (url)
.then(function(result){ deferredCall.resolve('Success' + result);},
function(){ deferredCall.resolve('Failure' + error););
然後我將要解決的承諾對象通話結束時(無論成功或失敗),這就是我想要的東西:
deferredCall.promise.then(function (value) {
return //something to pass to controller;
});
的目標是,控制器被實例化是否決心succeds或失敗。我的問題?解決只能承諾,所以:`deferredCall.promise。我如何通過以上解決方案來解決此承諾,並通過服務解決方案?服務方法的結果是一個承諾嗎?
就像我做一個服務的方法使$ http調用,然後返回deferredCall?
爲什麼你需要$ q這個? –
我不知道如何使用angularjs做到這一點。這不是我說「沒有其他方法可以做到這一點」 - 我真的不知道如何在javascript中處理這個問題。 $ q是我的猜測。我正在尋找任何能夠實現最終目標的承諾,即無論它失敗還是成功,都會返回$ http調用的結果。 DOES需要嵌套在另一個承諾中,因爲如果解析調用失敗,那麼控制器不會被實例化。 – VSO
@VSO你不需要創建另一個承諾..只是返回'$ http.get'承諾.. –