我如何在Angular2和Dart中重写angular1中的代码:
$interval(function () {
if($scope.carouselIndex < $scope.showcases.length -1){
$scope.carouselIndex = $scope.carouselIndex + 1;
} else {
$scope.carouselIndex = 0;
}
}, properties.delay);
我已经尝试过这种方式,但是没有用:
carouselIndex = 0;
for(int i=0; i<contents.size(); i++){
if(carouselIndex < contents.length -1){
setTimeout(function() {
carouselIndex = carouselIndex + 1;
}, 1000);
} else {
carouselIndex = 0;
}
}
任何的想法?
谢谢
最佳答案
您可以尝试Observable.interval
方法:
Observable.interval(properties.delay).subscribe(() => {
if (this.carouselIndex < this.showcases.length - 1) {
this.carouselIndex = this.carouselIndex + 1;
} else {
this.carouselIndex = 0;
}
});
每次达到延迟都会触发一个事件。因此,在订阅时定义的回调将被相应地调用。
在您的情况下,您尝试使用
setTimeout
函数将同步循环与异步处理混合在一起。