끝난 스트림에서 물건을 할 필요가 있지만 .onEnd()
이 아닌 것 같습니다. XHR 당 가져와 내 애플리케이션에 삽입해야하는 URL 목록이 있다고 가정 해 보겠습니다. 그 작업이 끝난 후에도 데이터에 의존하는 작업을 계속하고 싶습니다. 따라서이 작업을 병렬로 수행 할 수 없습니다. 나는 지금 이와 같은 것을 시도하고있다 :bacon.js에서 끝 이벤트를 어떻게 필터링합니까?
var data = Bacon.fromArray(myArray).flatMap(function(url) {
... fetch per XHR and return ...
});
data.onValue(function() { ... do something with data ... });
Bacon.onValues(
otherValue,
data,
function(value, data) {
// I need to check whether data stream ended
// if (data.isEnd()) obviously doesn't work
}
)
뿐만 아니라 작동하지 않을뿐만 아니라 옳지도 않다. 이 작업을 올바르게 수행하려면 어떻게해야합니까?
EDIT : 나는 함께 작업하는 것을 해킹했습니다 : data.mapEnd('we are done').filter(function(v) { return v === "we are done"; })
,하지만 나는 매우 더러운 해킹이라고 생각합니다. 거기에 더 순수한 게 없나요?
이 경우 'onEnd'를 사용하면 무엇이 문제가됩니까? – Bergi
@Bergi : 부작용 때문에 완벽합니다. 그러나 나는 다른 값 (아마'.sampledBy'와 함께)으로 끝 이벤트를 결합해야하므로 부작용 필드에 있지 않습니다. –
data.mapEnd (무언가)를 사용하여 종료 이벤트를 다른 값 이벤트처럼 처리 할 수있는 값 이벤트로 변환 할 수 있습니다 – raimohanska