각도 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
'Programing' 카테고리의 다른 글
검색되지 않은 TypeError: 정의되지 않은 속성을 읽을 수 없음('_H' 읽기) (0) | 2022.03.28 |
---|---|
__pycache__란 무엇인가? (0) | 2022.03.28 |
리액터 라우터 경로 전환과 함께 사용자 지정 구성 요소를 사용하는 방법 (0) | 2022.03.28 |
파이선 2.7 지원 종료? (0) | 2022.03.28 |
가상 환경 제거/삭제 방법 (0) | 2022.03.28 |