Future
μ λ€λ¦ ν΄λμ€ | κ²°κ΅μλ νλμ κ°μ λΈ ν μ’ λ£νκ±°λ μ€ν¨νλ Publisher
μ΄λμ λΌμ΄μ λ ν κ°μ μΈμλ₯Ό λ°λλ€.
attemptToFulfill
: Publisherκ° μμλ₯Ό λ°°μΆνκ±°λ μλ¬λ‘ μ’ λ£ν λ Publisherκ° νΈμΆνλFuture.Promise
Futureλ Future.Promise
λΌλ νμ
λ³μΉμΌλ‘ ν΄λ‘μ λ₯Ό μ 곡νλ€. μ΄ ν΄λ‘μ λ Result νμ
μ μΈμλ₯Ό νλ λ°κ³ λ°νκ°μ΄ μλ ννλ€.
μ΄ ν΄λ‘μ λ₯Ό μ¬μ©νμ¬ Futureμ μ΄λμ
λΌμ΄μ λ‘ λμ΄κ°λ ν΄λ‘μ μμ μ΄λ ν μμ
μ μννκ³ μ±κ³΅νμ λμ κ°μ΄λ μ€ν¨νμ λμ μλ¬λ₯Ό Future.Promise
ν΄λ‘μ λ‘ μ λ¬νλ€.
κ²°κ΅ Futureλ μ΄λ ν μμ μ μνν ν νλμ κ°μ λΈ ν μ’ λ£νκ±°λ μ€ν¨νλ€.
Future<Void, Error> { promise in
// 1
promise(.success(Void()))
// 2
promise(.failure(error))
}
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine Future Error")
case .finished:
print("Combine Future Finish")
}
}, receiveValue: {
print("Combine Future")
})
.store(in: &cancellables)
// Combine Future
// Combine Future Finish
Futureλ νλμ κ°μ λΈ ν μ’ λ£νκ±°λ μ€ν¨νλ€.
1μ μ½λκ° μ€νλλ©΄ κ°μ λ΄λ―λ‘ Publisherλ μ’ λ£νλ€. κ·Έλ κΈ° λλ¬Έμ 2μ μ½λλ ν¨λ ₯μ΄ μκ² λλ€.
Future<Void, Error> { promise in
// 1
promise(.failure(error))
// 2
promise(.success(Void()))
}
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine Future Error")
case .finished:
print("Combine Future Finish")
}
}, receiveValue: {
print("Combine Future")
})
.store(in: &cancellables)
// Combine Future Error
λ§μ°¬κ°μ§λ‘ 1μ μ½λλ₯Ό μ€ννλ©΄ μλ¬λ₯Ό λ΄λ―λ‘ Publisherλ μλ¬λ₯Ό λΈλ€.
κ·Έλ κΈ° λλ¬Έμ 2μ μ½λλ ν¨λ ₯μ΄ μκ² λλ€.
RxSwift
Singleμ μ¬μ©νμ¬ κ΅¬νν μ μλ€.
Single<Void>.create { observer in
observer(.success(Void()))
// μλ¬λ₯Ό λ΄λ κ²½μ° μμ μ½λ λμ λ€μκ³Ό κ°μ΄ μμ±νλ€.
// observer(.failure(error))
return Disposables.create()
}
.subscribe(onSuccess: { print("RxSwift Future") })
.disposed(by: disposeBag)
// RxSwift Future
ReactiveSwift
ν΄λΉ λμμ ꡬννκΈ° μν μ€νΌλ μ΄ν°λ₯Ό μ 곡νμ§ μλλ€.
μ°Έκ³
Last updated
Was this helpful?