다음과 같은 시나리오가 있습니다 : - 많은 수의 응용 프로그램이 있습니다. (1mil +) - 목록 1에있는 각 항목에 관찰 가능.구독 취소시 관찰 내용 삭제
응용 프로그램 초기화에서 관찰 가능 항목을 만들면 많은 처리와 메모리가 필요하므로 응용 프로그램이 고정됩니다. 한 번에 한 항목 씩 파트가 렌더링되므로 필요에 따라 솔루션을 만드는 것이 해결책입니다. 이것은 상당히 쉽습니다.
필요한 것은 항목을 바인딩 해제 한 후 새 배치를 표시하고 생성 된 관찰 가능 항목을 삭제하고 더 이상 사용하지 않는 것입니다.
한 가지 해결책은 새로운 배치로 전환 할 때 이전 배치를 반복하고 파괴하는 것입니다. 이것은 또한하기 쉽지만 불행히도 충분하지 않습니다.
내 응용 프로그램은 구성 요소로 분할되며, 각 응용 프로그램은 주 항목 풀의 항목을 사용하거나 사용하지 않을 수 있습니다. 즉, 이전 항목을 검색하여 바인딩 해제하고 관찰 대상을 삭제할 수는 없지만 모든 구성 요소를 검색해야합니다. 그것은 성능 관점에서 좋지 않으며 구성 요소가 서로를 알아야 할 필요가 없기 때문에 좋지 않습니다.
내 질문은. 관찰자를 없애기 위해 녹아웃에 어떤 방법 (내장형이든 아니든)이 있습니까? 더 이상 구독자가 없으면 없습니까?
감사합니다.
다른 관찰 가능 항목에 대한 새로운 참조를 생성하기 때문에'ko.computed'는 수동으로 처리해야하지만 더 이상 참조가 없으면 일반 관찰 가능 항목은 JS에 의해 가비지 수집되어야합니다. 그게 내가 잘못한거야? –
아닙니다. ko.computed는 disposeWhen과 disposeWhenNodeIsRemoved 옵션을 가지고 있습니다. Observables는 기본적으로 모델에 첨부되어 있으므로 특별히 삭제하지 않으면 수집되지 않습니다. 그러나 문제는 disposeWhenNodeIsRemoved와 같은 observables를 처리해야 할 때를 알 필요가 있다는 것입니다. 그러나 비슷하거나 콜백을 찾지 못했습니다. –
"주문형 생성 논리"는 단일 위치 또는 각 구성 요소에 있습니까? 논리를 단일 위치에 배치 할 수 있다면 이전 위치를 추적하고 바인딩을 해제 할 수 없습니까? –