我是一位有用的助手,可以翻译文本。
我正在学习Angular,遇到了两种返回Promise调用的方法。我想知道哪种方法更好,或者在什么情况下使用每种方法。 第一种技术:
我正在学习Angular,遇到了两种返回Promise调用的方法。我想知道哪种方法更好,或者在什么情况下使用每种方法。 第一种技术:
function getSomeDataFromServer() {
var deferred = $q.defer();
if (myData) {
// call to backend was previously made and myData is already loaded
deferred.resolve(myData);
} else {
// get data from server
$http.get(my_url_endpoint).then(function(response) {
// cacheResult() will set myData = response.data
deferred.resolve(cacheResult(response));
});
}
return deferred.promise;
}
第二技术:
function getSomeDataFromServer() {
if (myData) {
// call to backend was previously made and myData is already loaded
return $q.when(myData);
} else {
// get data from server
return $http.get(my_url_endpoint).then(function(response) {
// cacheResult() will set myData = response.data
return cacheResult(response);
});
}
}
var cached = null; function getSomeDataFromServer(){ return cached || (cached = $http.get(...)) }
或类似的东西。 - Benjamin Gruenbaum