我正在嘗試理解Promoting在Angular 1.0.7中的工作方式,但語法和概念對我來說很難。我創建了一個相關的以前的帖子Nesting promises with $resources in AngularJS 1.0.7,這工作正常。然而,當我嘗試做同樣的事情,但用$http
服務替換$resource
,那麼它不適合我的預期。
代碼從未等待承諾來,我沒有得到任何結果。
我附上代碼:
// URL has to be parsed to get the destination, language and boatType
var parseURL = function() {
var language = $routeParams.language;
var url = $location.path();
var deferred = $q.defer();
var promise = deferred.promise;
promise.then(function success(result) {
var destination = result;
console.log("destination:" + destination);
searchBoats(destination);
});
parseDestination(url, language).then(deferred.resolve);
};
parseURL();
var parseDestination = function(url, language) {
console.log("parseDestination.begin");
var departure = UrlService.parseUrlDeparture(url);
var deferred = $q.defer(),
promise = deferred.promise;
TranslationService.getTranslatedDeparture(departure, language, API_SERVER_URL, deferred.resolve, deferred.reject);
return promise;
};
// The function in the service
getTranslatedDeparture: function(destination, language, api) {
var defered = $q.defer();
var destinationPromise = defered.promise;
$http.get("http://" + api + "/translatedDepartures?departure=" + destination + ";lang=" + language + ";matchStart=" + true).then(
//var destination = result.data.map(function (source) { return source.element_translation; });
defered.resolve
);
return destinationPromise;
}
要使用的角度1.0.7不應該一個問題。我們有一個完整的大網站開發,它的工作完美。根據你的第二點,我們試圖對代碼進行重新分解,因爲我們有許多依賴關係和許多不遵循單一責任規則的函數。那麼,你能否提供一個滿足這個規則的工作示例? – Rober
要遷移到更新版本的Angular,此時此刻不是一種選擇。對這個問題應該有一個更加溫和的方法,你不覺得嗎? – Rober
@Claies問題不在於Angular 1.0.7,所以我沒有看到任何有害的答案。 – JLRishe