2017-05-17 2 views
0

이 예제는 문제의 성격을보다 잘 파악하기위한 것입니다.표준 함수로 호출되는 매개 변수가있는 익명의 콜백 함수

기능은 setTimeout(callback, timeMs)입니다. 콜백 함수에 인자를 넘겨 주겠습니까?

function handleRequestCB(request, response) 
{ 
    console.log("Request Received"); 
    if (request.method === 'GET') 
    { 
     console.log(request.url); 
    } 
    setTimeout(doResponse(response), 2000);//I know I cant pass arguments! 
} 



function doResponse(response) 
{ 
    response.writeHead(200, {"Content-Type": "text/html"}); 
    response.write(htmlFile); 
    response.end(); 
} 

어떻게 같은 시간이 setTimeout에서 비 익명 함수 doResponse() 및 통과 인수를 호출?

답변

2

setTimeoutcallback의 매개 변수를 허용하지 않습니다. 그러나 익명 함수를 전달하여 함수를 호출 할 수 있습니다. 따라서 다음을 수행 할 수 있습니다.

setTimeout(function() { 
    doResponse(response);  
}, 2000); 

네, 그게 까다 롭습니다. 이 IE9에서 지원 및 이전되지 않는

setTimeout(doResponse(), 2000, response); 

내가 그것을 운영자 추천하지 않을 : 일부 브라우저는 accept a 3rd parameter 매개 변수, 예를 들어입니다 있습니다.

+0

이것은 매우 분명합니다! 내가 어떻게 생각하지 않았 니? Newbies : D – Hairi

+1

@Hairi [이 페이지] (https://www.w3schools.com/jsref/met_win_settimeout.asp)를 살펴보면 필자가 내 대답에 대해 더 자세히 설명 한 몇 가지 예를 제공합니다. ;-) – Mistalis

0

음, 실제로 매개 변수를 전달할 수 있다고 생각합니다. 시도해보십시오 :

setTimeout(function(a){console.log(a)}.bind(null,"sss"),1000) 
관련 문제