Programing

콜백을 기반으로 관찰 가능한 반환

c10106 2022. 3. 26. 09:53
반응형

콜백을 기반으로 관찰 가능한 반환

나는 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

반응형