Node.js의 콜백 함수에서 값을 반환 할 때 약간의 문제가 발생할 수 있으므로 가능한 한 쉽게 상황을 설명하려고 노력할 것입니다.Node.js의 콜백 함수에서 값 반환
urllib.request(urlToCall, { wd: 'nodejs' }, function (err, data, response) {
var statusCode = response.statusCode;
finalData = getResponseJson(statusCode, data.toString());
});
나는 함수 내부에 그것을 포장하고 같은 값을 반환하려고 : I 출력 URL을 소요하고 해당 URL을 안타 제공하는 스 니펫이 고려 때문에에
function doCall(urlToCall) {
urllib.request(urlToCall, { wd: 'nodejs' }, function (err, data, response) {
var statusCode = response.statusCode;
finalData = getResponseJson(statusCode, data.toString());
return finalData;
});
}
을 내 Node.js를 코드, 나는이 같은 urlToCall
의 값이 결정됩니다 if-else
문을 많이 가지고 :
if(//somecondition) {
urlToCall = //Url1;
} else if(//someother condition) {
urlToCall = //Url2;
} else {
urlToCall = //Url3;
}
을 건 내부의 모든 문장이다 urllib.request
은 urlToCall
의 값을 제외하고는 동일하게 유지됩니다. 그래서 확실히 공통 코드를 함수 안에 넣어야합니다. 나는 같은 것을 시도했지만 doCall
은 항상 나를 undefined
으로 돌려 보낼 것이다. 나는이 같은 시도 :
response = doCall(urlToCall);
console.log(response) //Prints undefined
을하지만 doCall()
내부 값을 인쇄하면 완벽하게 인쇄하지만 항상 undefined
를 반환합니다. 내 연구에 따라 콜백 함수에서 값을 반환 할 수 없다는 것을 알게되었습니다. (사실입니까?) 그렇다면 모든 사람이이 상황을 처리하는 방법을 조언 해 줄 수 있습니다. 모든 if-else
블록에 중복 된 코드를 방지하고 싶습니다.
"그것이 사실입니까?" - 맞아. –
@ JanDvorak, 코드 복제 이외의 옵션이 없습니까? ;) –
자신의 콜백 중 일부를 전달하면 도움이 될까요? 나는 그렇게 믿는다. –