그래서, 나는 수수께끼에 대해 생각을 해 봤는데 - 나는 어떤 이유로 대형 오브젝트 내가 노드 JS에서 통해 반복했고, 내가 그 일을하는 동안 이벤트 루프를 차단하고 싶지 않았다한다면 어떨까요?자바 스크립트에서 non-blocking for 루프를 작성하는 가장 깨끗한 방법은 무엇입니까?
여기 오프 - 더 - 최고의 - 내 머리 예입니다, 나는 그것이 훨씬 청소기 될 수 있습니다 확신 :
var forin = function(obj,callback){
var keys = Object.keys(obj),
index = 0,
interval = setInterval(function(){
if(index < keys.length){
callback(keys[index],obj[keys[index]],obj);
} else {
clearInterval(interval);
}
index ++;
},0);
}
나는 그것이 더러운 것에 대한 다른 이유가 확신하지만, setInterval 0은 실제로 0ms마다 실행되지 않기 때문에 이것은 일반 for 루프보다 느리게 실행됩니다. 그러나 훨씬 빠른 process.nextTick으로 루프를 만드는 방법을 모르겠습니다. 내 테스트에서
, 나는 4 밀리 소요 (같은 정보를 기록,() hasOwnProperty으로 검사를) 루프 기본 반대로이 예제를 실행하기 위해 7 밀리 소요 발견했다.
그래서, Node.js를 사용하여이 같은 코드를 작성하는 가장 깨끗한/가장 빠른 방법은 무엇입니까?
죄송합니다. 질문을 잘못 읽으 셨습니다. – kennebec
왜요? 이것은 학대입니다. Do not do this – Raynos
@Raynos - 왜이 학대입니까? 네이티브 for 루프를 사용하여 거대한 객체를 반복 할 경우, 루프가 실행되는 동안 스레드를 차단합니다. 모든 사용자에게 서비스를 제공하기 위해 25ms가 걸리면 엄청난 규모 문제가 될 수 있습니다. – Jesse