Skip to content

Commit 846d608

Browse files
committed
Adds delay to SharedSequence.
1 parent eb5d238 commit 846d608

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

RxCocoa/Traits/SharedSequence/SharedSequence+Operators.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,3 +493,24 @@ extension SharedSequenceConvertibleType {
493493
return SharedSequence(source)
494494
}
495495
}
496+
497+
// MARK: delay
498+
extension SharedSequenceConvertibleType {
499+
500+
/**
501+
Returns an observable sequence by the source observable sequence shifted forward in time by a specified delay. Error events from the source observable sequence are not delayed.
502+
503+
- seealso: [delay operator on reactivex.io](http://reactivex.io/documentation/operators/delay.html)
504+
505+
- parameter dueTime: Relative time shift of the source by.
506+
- parameter scheduler: Scheduler to run the subscription delay timer on.
507+
- returns: the source Observable shifted in time by the specified delay.
508+
*/
509+
public func delay(_ dueTime: RxTimeInterval)
510+
-> SharedSequence<SharingStrategy, E> {
511+
let source = self.asObservable()
512+
.delay(dueTime, scheduler: SharingStrategy.scheduler)
513+
514+
return SharedSequence(source)
515+
}
516+
}

Tests/RxCocoaTests/Driver+Test.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,6 +1186,28 @@ extension DriverTest {
11861186
}
11871187
}
11881188

1189+
// MARK: delay
1190+
extension DriverTest {
1191+
func testAsDriver_delay() {
1192+
let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()
1193+
1194+
let driver = hotObservable1.asDriver(onErrorJustReturn: -1).delay(0.1)
1195+
1196+
let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {
1197+
XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])
1198+
1199+
hotObservable1.on(.next(1))
1200+
hotObservable1.on(.next(2))
1201+
1202+
hotObservable1.on(.error(testError))
1203+
1204+
XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])
1205+
}
1206+
1207+
XCTAssertEqual(results, [1, 2, -1])
1208+
}
1209+
}
1210+
11891211
//MARK: interval
11901212
extension DriverTest {
11911213
func testAsDriver_interval() {

0 commit comments

Comments
 (0)