angularjs promise/timeout:条件超时



那么有没有可能在$scope.counter达到5之后才能达到.then()

这是JSFiddle

不知何故使用Promise毁了我的观察者 - 它仅适用于调整窗口大小的情况。所以我想知道我是否可以在没有Promises的情况下做到这一点

<div ng-app="myApp">
    <div ng-controller="myController">
    <div>some{{message}}</div>
    <div>counter: {{counter}} sec</div>
    </div>
</div>
(function(){
var myApp = angular.module('myApp', []);
myApp.controller('myController', function($scope, $timeout){
    //time
    $scope.counter = 0;
    $scope.message = "";
    //timer callback
    var timer = function() {
        $scope.counter++;
        if ($scope.counter > 5) {
            return;
        }
        $timeout(timer, 1000);
    }
    $timeout(timer, 2000).then(function() {
        $scope.message="body once told the world was gonna roll me";
    });       
});
})();

$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";
});   

普伦克:https://jsfiddle.net/463srkyj/

在不了解有关您的代码的更多信息的情况下,如果两个超时值可以相同,我建议使用 $interval 而不是$timeout。 还会问为什么不把你的消息放在你的if ($scope.counter > 5)条件下。

相关内容

  • 没有找到相关文章

最新更新