Używam obietnicy $q
, aby zawrzeć obietnicę wokół starszego wywołania zwrotnego. Jednak istniejące wywołanie zwrotne nie ma wartości do zwrócenia. Wymaga funkcji sukcesu bez parametrów.Utwórz obietnicę AngularJS bez wartości zwracanej
angular.module('MyModule').service('MyService', function() {
function initialize() {
var deferred = $q.defer();
LegacyFactory.initialize(
// 'void' Success Callback
function() {
deferred.resolve (/* WHAT DO I PUT HERE? */);
},
// Error Callback
function (errorCode) {
deferred.reject(errorCode);
});
return deferred.promise;
}
});
nie mogę znaleźć void
wersję resolve
w angularjs docs. Mogę zwrócić fałszywą wartość, ale wtedy klienci mogą uzyskać dostęp do tej sztucznej wartości, co może spowodować zamieszanie.
Jak utworzyć obietnicę AngularJS bez wartości zwracanej? UWAGA: Pytanie AngularJS promise returning empty object jest całkowicie różne. To pytanie zwraca wartość w funkcji resolve
.
Po prostu rozwiąż z niczym ... 'deferred.resolve()'? – PSL
@PSL Czy to możliwe? Dokumenty o tym nie wspominają. – metacubed
Tak, możesz rozwiązać bez żadnej wartości. Po prostu spróbuj i zobacz, co się stanie .. :) http://plnkr.co/edit/BpYqlg?p=preview – PSL