2013-12-23 5 views
0

나는 몇 HTTP 클라이언트에 JSON 개체를 보내는 데 사용되는 루프가하십시오 내에서 기능을하지 마십시오 :콜백 함수는 린트 오류를 ​​제기

for(var i=0; i<clients.length; i++){ 
    request({ 
     method: 'POST', 
     uri: clients[i].contact, 
     json: obj 
    }, 
    function(err, response, body){ 
     .... 
    });  
} 

보풀이는 "W083은 나에게 말한다을 고리". 이 작업을 수행하는 가장 깨끗한 방법은 무엇입니까? 이 접근법은 노드 j를 사용 함에도 불구하고 확장 성이 없다는 우려가 있습니다. 많은 수의 클라이언트에게 적절한 접근 방법은 무엇입니까?

답변

0

벤치 마크 : 함수 외부 루프 20 배 빠른 내 테스트에

// FILE: test.js 

// note: 1e9 == 10^9 

var begin, end; 

// TEST sum function outside 
begin = process.hrtime(); 
function sum(a, b) { 
    return a + b 
} 

for(var i=0; i< 1e9; i++) { 
    sum(i, i); 
} 

end = process.hrtime(begin); 
console.log('functions outside a loop = ', end[0] + end[1]/1e9, 'seconds') 

// TEST sum function within a loop 
begin = process.hrtime(); 

for(var i=0; i< 1e9; i++) { 
    (function sum(a, b) { 
     return a + b 
    })(i, i); 
} 

end = process.hrtime(begin); 

console.log('functions within a loop = ', end[0] + end[1]/1e9, 'seconds') 

결과 : 어쨌든

F:\damphat>node test.js 
functions outside a loop = 1.032908888 seconds 
functions within a loop = 20.298613718 seconds 

, 나는 당신이 루프에서 콜백을 이동하지한다고 생각합니다 이는 귀하의 사례에 대한 성과를 향상시키지 않기 때문입니다. 코드를 깨끗하고 읽기 쉬운 상태로 유지하십시오.