我如何在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函数将同步循环与异步处理混合在一起。

10-01 21:23