Bilibili-Evolved/registry/lib/components/video/player/common/mini-rxjs/utils/firstValueFrom.ts
2022-10-12 23:27:58 +08:00

20 lines
415 B
TypeScript

import { Subject } from '../subject'
export const firstValueFrom = <T>(subject: Subject<T>) =>
new Promise<T>((resolve, reject) => {
const unsubscribe = subject.subscribe({
next: (value: T) => {
resolve(value)
unsubscribe()
},
error: () => {
reject()
unsubscribe()
},
complete: () => {
reject()
unsubscribe()
},
})
})