Skip to content

Instantly share code, notes, and snippets.

View layoutSubviews's full-sized avatar

Renaud Lienhart layoutSubviews

View GitHub Profile
@layoutSubviews
layoutSubviews / CombineLatestRace.swift
Created February 1, 2021 22:05
Gist demonstrating Publishers.CombineLatest is racy
func testCombineLatest() {
for _ in 1...100 {
let e = expectation(description: "Each subject should emit true")
let s1 = CurrentValueSubject<Bool, Never>(false)
let s2 = CurrentValueSubject<Bool, Never>(false)
let cancellable = Publishers.CombineLatest(s1, s2)
.sink {
if $0, $1 {
e.fulfill()
}
import Combine
import Foundation
let c = Publishers
.CombineLatest(
Just(true)
.delay(for: .seconds(0.5), scheduler: DispatchQueue(label: "A"))
.prepend(false),
Just(true)
.delay(for: .seconds(1), scheduler: DispatchQueue(label: "B"))
import Combine
func stringIfOver42(_ value: Int) -> String? {
value > 42 ? "\(value)" : nil
}
let voidSubject = PassthroughSubject<Void, Never>()
let intSubject = PassthroughSubject<Int, Never>()
let publisher = voidSubject