$timeout
не возвращает никакого вида Promise
, однако, если вы действительно хотите, чтобы эта работа не выполнялась, вы можете сделать следующее:
var defer = $q.defer();
var timer = function() {
$scope.counter++;
if ($scope.counter > 5) {
defer.resolve(true);
return;
}
$timeout(timer, 1000);
}
$timeout(timer, 2000);
defer.promise.then(function() {
$scope.message="body once told the world was gonna roll me";
});
Plunker: https://jsfiddle.net/463srkyj/
Не зная больше о вашем коде, я бы предложил использовать $interval
вместо $timeout
, если оба значения времени ожидания могут быть одинаковыми.Также спросите, почему бы просто не установить ваше сообщение в вашем if ($scope.counter > 5)
условии.