У меня был следующий код в моем проекте, и я надеялся, что это сработает.Есть ли более чистый способ вернуть обещание с использованием углового
var retrieveUpdates = function (hash) {
myFunction(data)
.then(function(filters){
return Restangular.all('retrieveUpdates').post({ filters });
});
};
Но, конечно, это терпит неудачу, потому что возвращение происходит до того. Я могу «исправить» его, но он кажется уродливым (особенно, когда этот сценарий повсюду).
var retrieveUpdates = function (hash) {
var defer = $q.defer();
myFunction(data)
.then(function(filters){
Restangular.all('retrieveUpdates').post({ filters }).then(defer.resolve, defer.reject);
});
return defer.promise;
};
Есть ли более чистый способ сделать это?
Почему вы не можете просто придерживаться того, что у вас есть на первом месте. Он возвращает обещание, поэтому просто отключите его для обратных вызовов разрешения? Вы даже можете сделать это в службе, если хотите, и обновите область оттуда. –
[Что такое отложенный шаблон и как его избежать?] (Http://stackoverflow.com/questions/23803743/what-is-the-deferred-antipattern-and-how-do-i-avoid -Это) –