홈>
간단한 node.js 변환 스트림이 있다고 가정 해 봅시다 :
export class JSONParser extends stream.Transform {
constructor() {
super({objectMode: true});
}
}
한동안 항목을 동 기적으로 처리 한 다음 나머지를 지연시키고 싶습니다. 다음과 같은 것 :
export class JSONParser extends stream.Transform {
count = 0;
constructor() {
super({objectMode: true});
}
_transform(chunk, encoding, cb) {
const modifiedChunk = this.modify(chunk);
if(count++ % 55 === 0){
process.nextTick(() => this.push(modifiedChunk));
return;
}
this.push(modifiedChunk);
}
}
이론적으로 이것은 55 개 정도의 항목마다 스트림이 다음 항목까지 처리하여 나머지 항목을 처리 함을 의미합니다. 질문-
<올>
이것은 나머지 모든 아이템들의 처리를 지연시킬 것인가, 아니면이 하나의 덩어리를 지연시킬 것인가? 푸시 된 청크의 순서를 유지합니까?
토큰 버킷 알고리즘이 속도 제한을 수행 할 수 있다고 생각하는데 이벤트 루프가 아닌 블로킹 스트림을 얻는 더 좋은 방법일까요?
- 답변 # 1
- 답변 # 2
이 경우 setImmediate not process를 사용하는 것이 좋습니다 .nextTick이 I/O를 굶주릴 것입니다 :
if(count++ % 55 === 0){ setImmediate(() => this.push(modifiedChunk)); return; }
대신 :
if(count++ % 55 === 0){ process.nextTick(() => this.push(modifiedChunk)); return; }
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
process.nextTick은 비동기 메서드입니다. 기존 프로세스 스택이 완료된 후 전달한 메소드를 호출합니다.
따라서 푸시 될 아이템의 순서는 (112 개의 아이템이 있다고 가정) :
1,2,3,4 ... 54, 56, 57, ..., 109, 111, 112, 55, 110