RxJS를 사용하여 sync world와 비동기적인 이벤트 세계를 "연결"하고 싶습니다. 특히 시간 간격 동안 수집 된 이벤트 배열을 반환하는 함수를 만들고 싶습니다. 내가Array에 관찰 가능한 RxJS 수집
var source = Rx.Observable
.interval(100 /* ms */)
.bufferWithTime(1000).take(1)
내가 잘 올바른 값을 인쇄 할 수 있습니다 원하는 것을하는 관찰 가능한 만들 수 있습니다
var subscription = source.subscribe(
function (x) {
console.log('Next: ' + JSON.stringify(x));
},
function() {
console.log('Completed');
});
이 내가 원하는 할당하는 것입니다
[0,1,2,3,4,5,6,7,8]
Completed
를 인쇄하지만 원하는 이 배열을 변수로. 개념적으로 나는
var collectedDuringSecond = source.toPromise.getValue()
아이디어 같은 위의 라인이 collectedDuringSecond이 포함됩니다 완료된 후 getValue 그렇게 차단하는 것입니다 원하는 [0,1,2,3,4,5,6,7,8]
먼저 JavaScript로 차단하는 것이 가장 좋은 방법은 아닙니다. Rx를 사용하면 특히 비동기 프로그래밍에서 발생하는 많은 고통을 피할 수 있으므로 가치를 확보하기 위해 차단해야하는 이유는 무엇입니까? –
저는 JavaScript가 처음이므로 차단을 원하지 않을 수도 있습니다.). 기본적으로이 특정 데이터 세트는 이벤트를 전달 메커니즘으로 사용하는 경우에도 상당히 정적입니다. 따라서 "더 간단한"동기식 API를 API 클라이언트에 노출하고자했습니다. 귀하의 의견을 바탕으로 아마도 재검토하고 Observable을 반환하고 클라이언트가 원하는 방식으로 이벤트를 사용하게해야합니다. – apolenur
확실히 좋은 접근 방법입니다. * 어떤 이유로 (왜 그런지 모르겠다.) Rx를 숨기고 싶다면, 당신은 API에 노드 스타일의 콜백 ('function (err, value) {...}')을 제공 할 수있다. 주목할 만한. 그러나 API 호출 자체에서 콜백을 제공하는 대신 Observable을 공용 API의 일부로 공개하는 것이 좋습니다. 왜냐하면 Observable은 항상 객체에 "구독"할 수 있기 때문입니다. –