이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 3279|회답: 2

[기타] rxJS 첫 번째 값 출처와 마지막 값 출처의 차이에 대해

[링크 복사]
2024-8-6 11:19:02에 게시됨 | | | |
요구사항: 프로젝트는 Observables를 Promises로 변환하고 완료를 기다려야 하며, Angular 프로젝트에서 toPromise() 메서드를 사용할 경우 힌트가 폐지되어 firstValueFrom 또는 lastValueFrom 정적 메서드를 사용하는 것이 권장됩니다.



왜 toPromise() 방식을 비추천해야 하나요?

왜냐하면 toPromise() 메서드 이름은 어떤 값을 Promise가 해결할지 절대 표시하지 않기 때문인데, Observables는 시간이 지나면서 여러 값을 생성할 수 있기 때문입니다. 약속으로 변환할 때, 첫 번째로 도착한 값을 선택할지 마지막 값을 선택할지 선택하는 것이 좋습니다. 이 모든 문제를 해결하기 위해 우리는 toPromise()를 비공식 처리하고 promise로 변환하는 두 가지 새로운 헬퍼 함수를 도입하기로 결정했습니다.

그냥 이해하세요관측량은 여러 값을 생성합니다그런 다음약속은 오직 하나의 값만 만듭니다그 후 일부 사용자는 첫 번째 값을 사용하고 싶어 하고, 어떤 사용자는 마지막 값을 사용하려 하므로 firstValueFrom과 lastValueFrom이 나타납니다. (참고: toPromise()는 관측 가능 값들을 얻는 마지막 값입니다

firstValueFrom 예제

Observable이 완성될 때까지 기다리지 않고 첫 번째 값을 받아야 하므로 firstValueFrom을 사용할 수 있습니다. firstValueFrom은 Observable에서 처음 방출된 값으로 약속을 해석하고 즉시 구독을 해제하여 자원을 보존합니다. 만약 Observable이 값을 출력하지 않고 완성되면, firstValueFrom 역시 EmptyError와 함께 거부됩니다.



lastValueFrom 예제

lastValueFrom은 toPromise()와 거의 동일하며, 이는 관찰 가능 값이 완성되었을 때 도달한 마지막 값으로 파싱하지만, 단일 값을 출력하지 않고 완료될 때는 다르게 동작합니다. Observable이 발화 없이 완료되면, toPromise()는 성공적으로 undefine으로 해결되어(반환 타입이 변경됨), lastValueFrom은 EmptyError로 거부됩니다. 따라서 lastValueFrom의 반환 타입은 <T>Promise이며, 이는 RxJS 6의 toPromise()와 유사합니다.





구문 분석 예시

RxJS에서 간격(1000)은 0부터 시작하는 1000밀리초(즉, 1초)마다 증가하는 수열을 방출하는 관측량을 생성합니다.

다음으로, .pipe(take(10))는 Observable이 방출하는 요소 수를 제한하는 연산자 연쇄입니다. 여기서 take(10)는 처음 10개의 값만 가져간다는 뜻입니다.

이 표현을 자세히 설명해 보겠습니다:

interval(1000): 1초마다 숫자를 방출하는 관측량을 생성합니다. 숫자 순서는 0에서 시작해 매번 1씩 증가합니다.

.pipe(take(10)): .pipe() 메서드를 사용하여 여러 연산자를 연결하세요. 여기서는 take(10) 연산자를 사용하여 Observable이 처음 10개의 값만 출력하도록 제한합니다.

EmptyError 오류 테스트

코드는 다음과 같습니다:


또는




참조:하이퍼링크 로그인이 보입니다.




이전의:MySQL 명령줄 쿼리 결과가 반환되나요? 물음표
다음:Angular 18 시리즈(22)는 FontAwesome 아이콘 라이브러리를 도입합니다
 집주인| 2024-8-6 11:21:09에 게시됨 |
Angular HTTP에서 lastValueFrom 또는 firstValueFrom을 사용하면 동등하며, 둘 다 사용할 수 있습니다.
 집주인| 2024-10-16 21:44:52에 게시됨 |
만약 ()를 반환하면 시퀀스에 요소가 없는 예외가 발생할 수 있고, lastValueFrom은 이제 구성 매개변수를 두 번째 매개변수로 받아들이며, 관측값이 비어 있을 때 기본값을 지정할 수 있습니다:

면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com