我正在开发一个应用程序,我希望使用RxSwift和RxCocoa实现以下功能
...等
这里的关键是在下载下一个文件之前必须完成每个文件的处理。至少必须按顺序执行文件处理的顺序。如果我可以在文件1处理时开始下载文件2,那将是非常棒的,但不是必需的。
我尝试使用SerialDispatchQueueScheduler来完成这项工作,但由于文件大小不同,每个文件的下载都会在不同时间完成,因此处理代码的启动顺序与我启动时不同下载。
我可以通过使用NSOperations等轻松实现此功能而不使用Rx,但我希望在此应用中继续使用Rx,因为它是我在此应用中的其他地方使用的。
下面我已经提供了一些包含一些代码的代码段。为了这个问题,已添加了评论。
var myButton;
myButton.addEventListener('click', function (e) {
productAddToCartForm.submit(this);
redirectToCart();
});
答案 0 :(得分:4)
我设法通过使用concatMap运算符而不是
来解决它 .flatMapWithIndex({ [unowned self] (task, index) in
return self.fetchDiff(for: task, taskIndex: index, taskCount: tasks.count) // StackOverflow: Downloads a file from a URL
})
concatMap运算符确保在发出更多信号之前完成第一个observable。我不得不使用一些技巧,因为concatMap没有附带concatMapWithIndex,但它可以工作:)