DispatchQueue.main だとプログラム終了まで結果が返ってこないと思います。combineLatest に関係なく↓だと返ってきません。 import Combine import Dispatch Just(2) .subscribe(on: DispatchQueue.main) .sink( receiveCompletion: { print("completion:", $0) semaphore.signal() }, receiveValue: { print("value:", $0) }) .store(in: &subscriptions) semaphore.wait() (edited)import Combine import Dispatch Just(2) .subscribe(on: DispatchQueue.global()) .sink( receiveCompletion: { print("completion:", $0) semaphore.signal() }, receiveValue: { print("value:", $0) }) .store(in: &subscriptions)combineLatest を入れると DispatchQueue.global() でも返ってきません。combineLatest についてはまだ調べられてません。