Rxjs to Promise()가 더 이상 사용되지 않습니다.
나는 그것을 읽었습니다.toPromise()
는 RxJS 7에서 더 이상 사용되지 않으며 RxJS 8에서는 제거됩니다.저는 http 호출을 처리하기 위해 각진 비동기 구문과 함께 자주 사용해왔습니다.안티패턴으로 간주되나요?스트림의 개념은 이해하지만 http call은 하나의 값만 내보냅니다.단순한 http 통화에 대해 관찰할 수 있는 요점을 모르겠습니다.다음에는 어떤 걸 써야 합니까?반응형 프로그래밍을 완전히 수용해야 합니까?
왜 이런 일이 생기는 건가요?
여기서 언급한 바와 같이, 이것들이 주요한 이유입니다.toPromise
감가 상각 중:
한가지 목표는 그것을 제거하는 것이었습니다.
Observable
프로토타입을 제작하여 독립형 유틸리티 기능으로 전환할 수 있습니다.작명은
toPromise
최고가 아닙니다.특히 와 함께 사용할 경우await
잘 읽히지 않습니다.await categories$.toPromise()
대await lastValueFrom(categories$)
의 유형 정보
toPromise
틀렸습니다.출처가 언제Observable
단 하나의 값도 발산하지 않고 완성되었습니다 - 로 해결되었습니다.undefined
. 그 경우에는 거절해야 합니다. A.Promise
값이 해결될 때 값이 존재하고 존재한다는 "결과"입니다.undefined
. 그러나 스트림이 값을 방출하지 않고 완료되면 방출된 스트림을 구별할 수 없습니다.undefined
일부러 그리고 더 이상 발산하지 않고 완성된 시냇물.
다음에 무엇을 사용해야 합니까?
정말 약속대로 해야 한다고 주장한다면,lastValueFrom
/firstValueFrom
. 그렇지 않으면 반응형 프로그래밍으로 전환하는 것이 방법이 될 것입니다.
사용.toPromise
( 사용 안 함) -
public async loadCategories() {
this.categories = await this.inventoryService
.getCategories()
.toPromise()
}
사용.lastValueFrom
(새것) -
import { lastValueFrom } from 'rxjs';
public async loadCategories() {
const categories$ = this.inventoryService.getCategories();
this.categories = await lastValueFrom(categories$);
}
이 링크는 도움이 될 것입니다.
https://indepth.dev/graphics/1287/graphicsjs-promise-in-being-comparation
firstValueFrom
그리고.lastValueFrom
여러 가지 이유로 보다 나은 대안이 될 수 있습니다.
- 이름을 짓는 것이 더 읽기 쉽고 설명력이 뛰어납니다.
- 처음 또는 마지막 값을 선택할 수 있는 추가 기능입니다.
- 관측 가능한 값이 전혀 방출되지 않은 경우 기본값을 선언할 수 있는 추가 기능
await lastValueFrom(data$, {defaultValue: 'Some default value'})
이에 대한 자세한 내용은 아래 비디오를 확인하십시오.
https://www.youtube.com/watch?v=3aeK5SfWBSU
코드 예제:
사용하지 않는 용도:
await this.http.post<boolean>(`/someApi`).toPromise()
.then((value) => {
console.log(`Result: ` + value);
})
새 코드:
import { firstValueFrom } from 'rxjs';
await firstValueFrom(this.http.post<boolean>(`/someApi`))
.then((value) => {
console.log(`Result: ` + value);
})
언급URL : https://stackoverflow.com/questions/67044273/rxjs-topromise-deprecated
'programing' 카테고리의 다른 글
주장을 바탕으로 재스민 스파이를 수정할 수 있는 방법이 있습니까? (0) | 2023.09.09 |
---|---|
각도 2 - 드롭다운 목록에서 선택한 값 설정 (0) | 2023.09.09 |
SQL Server에서 Oracle로 데이터 반복 이동 (0) | 2023.09.09 |
NSURL 연결에 대해 Xcode 4 경고 "식 결과가 사용되지 않음" (0) | 2023.09.09 |
PHP, 계속; for each() { for each() { (0) | 2023.09.09 |