Programing

각도 2에서 RXJS를 사용하여 사용자 지정 이벤트를 관찰하는 방법

c10106 2022. 3. 28. 20:56
반응형

각도 2에서 RXJS를 사용하여 사용자 지정 이벤트를 관찰하는 방법

나는 RxJS와 통합하려는 제3자 라이브러리를 가지고 있다.이것은 타이거 텍스트라는 메시징 라이브러리 입니다.그들에 따르면 나는 메시지라는 이벤트를 들을 수 있고 스트림에 메시지가 있을 때 그것을 더 활용하기 위해 사용할 수 있다.동일한 코드 조각은 다음과 같다:-

var client = new TigerConnect.Client({ defaultOrganizationId: 'some-org-id' })

client.signIn('user@mail.com', 's3cr3t', { udid: 'unique-device-id' }).then(function (session) {
  onSignedIn(session)
})

function onSignedIn(session) {
  console.log('Signed in as', session.user.displayName)

  client.messages.sendToUser(
    'someone@mail.com',
    'hello!'
  ).then(function (message) {
    console.log('sent', message.body, 'to', message.recipient.displayName)
  })

  client.events.connect()

  client.on('message', function (message) {
    console.log(
      'message event',
      message.sender.displayName,
      'to',
      message.recipient.displayName,
      ':',
      message.body
    )
  })
}

이제 아래에 언급된 코드 조각이 있는 곳을 살펴보십시오.

client.on('message', function (message) {
    console.log(
      'message event',
      message.sender.displayName,
      'to',
      message.recipient.displayName,
      ':',
      message.body
    )
  })

나는 RxJS를 어떻게 사용하는지 알고 싶었고, 이 코드 조각으로 관찰 가능한 것을 만들어서 스트림에 가입하고, 변화가 있을 때마다 나는 새로운 데이터를 가져다가 내가 원하는 대로 처리한다.

조언을 구하십시오.

이 사용 사례의 경우 일반적으로 사용자 정의 관찰 가능 항목을 작성할 필요가 없으며 다음 항목만 사용하십시오.Observable.create()그렇다면 그것은 당신이 감기를 쓰고 싶은지 아니면 관찰할 수 있는 뜨거운 것을 쓰고 싶은지에 달려있다.

콜드 관찰기구의 경우 구독 시 값 생성자를 생성하고 구독을 취소할 때 닫으십시오.

Observable.create(obs => {
  var client = new TigerConnect.Client({ defaultOrganizationId: 'some-org-id' });
  client.signIn('user@mail.com', 's3cr3t', { udid: 'unique-device-id' }).then(function (session) {
    onSignedIn(session);
  });

  client.on('message', function (message) {
    obs.next(...);
  });

  return () => {
    client.close(); // or whatever...
  };
});

또는 핫 관찰 가능을 쓰려면 모든 구독에 대해 프로듀서가 독립적으로 존재하며 수신기를 추가/제거하십시오.

var client = new TigerConnect.Client({ defaultOrganizationId: 'some-org-id' });
client.signIn('user@mail.com', 's3cr3t', { udid: 'unique-device-id' }).then(function (session) {
  onSignedIn(session);
});

Observable.create(obs => {
  let listener = client.on('message', function (message) {
    obs.next(...);
  });

  () => {
    // remove the event listener somehow
    listener.remove();
  };
});

때때로 당신은 이 문제를 a를 사용함으로써Subject하지만 이것은 보통 사용하는 것보다 더 복잡하다.Observable.create()왜냐하면 당신은 스스로 창조와 논리를 해체해야 하고 또한 피실험자들은 내부 상태를 가지고 있기 때문이다.

여기 당신과 매우 비슷한 질문이 있다.

RxJS의 수석 개발자가 질문한 내용과 관련된 기사:

사용자 정의 이벤트에서 관찰할 수 있는 항목을 만드는 데 사용할 수 있다.

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEventPattern';

const messages = Observable.fromEventPattern(
  handler => client.on('message', handler),
  handler => client.off('message', handler)
);
messages.subscribe(message => console.log(message));

너는 에 패스한다.fromEventPattern사용자 지정 API의 추가 및 제거 메커니즘을 사용하여 이벤트 핸들러를 추가 및 제거하는 기능.질문에 포함시키지 않았지만, 나는 당신이 사용하고 있는 API가off방법의

참조URL: https://stackoverflow.com/questions/43104030/how-to-observe-a-custom-event-using-rxjs-in-angular-2

반응형