콜백을 기반으로 관찰 가능한 반환
나는 ngx 칩에서 작업 예시를 내 필요에 맞게 조정하려고 노력한다.onRemoving 방법 예는 다음과 같다.
public onRemoving(tag: TagModel): Observable<TagModel> {
const confirm = window.confirm('Do you really want to remove this tag?');
return Observable
.of(tag)
.filter(() => confirm);
}
대신 지금windows.confirm
다음이 포함된 사용자 지정 구성 요소를 사용하려는 경우AskQuestion
다음과 같은 부호가 있는 방법:
AskQuestion(question: string, yesCallback: () => void, noCallback?: () => void): void {
그래서 지금 나는 여러 번의 콜백을 가지고 있지만 ngx-chips 컴포넌트는 내가 관찰할 수 있는 것을 반환할 것을 기대한다.나는 콜백을 관찰할 수 있는 것으로 바꾸려고 노력했다.bindCallback
방법:
public onRemoving(tag: TagModel): Observable<TagModel> {
const choiceCallback = (choice: boolean): TagModel=> {
if (choice)
return tag;
};
this.questionService.AskQuestion("Remove item?", () => choiceCallback(true), () => choiceCallback(false))
return Observable.bindCallback(choiceCallback);
}
하지만 내가 잘못하고 있는 것 같아.좋은 생각 있어?
의 정의bindCallback()
읽기:
f(x, 콜백) 유형의 함수 f를 제공하면 g(x)로 호출될 때 관측 가능한 함수 g를 반환한다.
그리고 너의 용법은 이 설명과 맞지 않아. choiceCallback()
관측 가능한 함수를 반환하지 않는다.
대신 관측 가능한 생성자를 사용하십시오.
public onRemoving(tag: TagModel): Observable <TagModel> {
return Observable.create(observer => {
const choiceCallback = (choice: boolean) => {
if (choice) {
observer.next(tag);
}
observer.complete();
};
this.questionService.AskQuestion("Remove item?", () => choiceCallback(true), () => choiceCallback(false));
});
}
이 스택에 대해 100% 익숙하진 않지만, 내가 볼 때, 내가 보기엔,bindCallback
기능을 반환하다.Observable
(docs).
그래서 관찰 가능한 것을 얻기 위해 전화해서 당신의 반품 명세서에 사용해야 할 수도 있지 않을까?
기능 서명에 관찰 가능한 유형을 반환한다고 나와 있기 때문에
다음을 통해 반환문을 바꿀 수 있다.
return Observable.bindCallback(choiceCallback)()
참조URL: https://stackoverflow.com/questions/47550423/returning-observable-based-on-callback
'Programing' 카테고리의 다른 글
Java "가상 시스템" 대Python "인터프리터" 비유? (0) | 2022.03.26 |
---|---|
Vuetify 데이터 테이블 날짜 열을 포맷하는 방법? (0) | 2022.03.26 |
Chrome Extension에서 VueRouter 및 Vue.js 사용 - 경로 세그먼트 관련 문제 (0) | 2022.03.26 |
DOM 변경 전에 Vue-roouter로 경로를 변경할 때 화재 발생? (0) | 2022.03.26 |
MySQLDB라는 모듈 없음 (0) | 2022.03.26 |