0

我想以反向依赖顺序观察对象树,但不知道要使用什么组合器。具体情况是遍历 AWS 资源以便删除,例如在删除 S3 存储桶之前删除 S3 对象,如下所示:

  val S3 = new AmazonS3Client

  val buckets = Observable.from {
    S3.listBuckets.asScala
  }

  val objects = buckets.flatMap { b => Observable.from(
    S3.listObjects(new ListObjectsRequest().withBucketName(b.getName))
      .getObjectSummaries
      .asScala)
  }

  val combined:Observable[_] = ???

  for (thing <- combined) thing match {
    case b:Bucket => println("delete bucket")
    case o:S3ObjectSummary => println("delete object")
  }

所以,最终的combinedobservable 应该在发射桶之前发射所有的对象。我应该为此使用什么组合器?

4

1 回答 1

1

您可以附加b到其对象的末尾,例如,

val objects = buckets.flatMap { b => Observable.from(
  S3.listObjects(new ListObjectsRequest().withBucketName(b.getName))
    .getObjectSummaries
    .asScala) :+ b
}
于 2015-08-14T09:35:41.140 回答