2014-11-28 2 views
0

나는 express를 사용하여 사이트의 html을 json으로 바꾸고 요청한 다음 반환한다. 예를 들면 :요청의 콜백에 변수를 전달하는 방법은 무엇입니까?

app.get('/live', function(req,_res){ 
    res = _res; 
    options.url = 'http://targetsite.com'; 
    request(options,parseLive); 
}); 

function parseLive(err, resp, html) { 
    var ret = {status:'ok'}; 
    -- error checking and parsing of html -- 
    res.send(ret); 
} 

현재 내가 리턴 콜을 추적하기 위해 글로벌 var에 고해상도를 사용하고 있지만, 여러 요청이 동시에 이루어진 경우이 실패합니다. 그래서, 익스프레스에서 콜백에 요청에 따라 리턴 콜을 일치시키는 방법이 필요합니다.

어떻게하면됩니까?

답변

1

클로저를 사용하십시오.

변수를 함수에 전달하십시오. 해당 함수에서 request으로 전달할 함수를 반환하십시오.

app.get('/live', function(req,_res){ 
    options.url = 'http://targetsite.com'; 
    request(options,parseLiveFactory(res)); 
}); 


function parseLiveFactory(res) { 
    function parseLive(err, resp, html) { 
     var ret = {status:'ok'}; 
     -- error checking and parsing of html -- 
     res.send(ret); 
    } 
    return parseLive; 
} 
+0

나는 잠시 동안 내 머리를 두드리고있었습니다. 그게 얼마나 쉬웠는지 알게되면, 어리석은 기분이 들게되었습니다. 아아, 고마워! –

관련 문제