2016-08-06 4 views
0

아직 학습 노드입니다. 에 근거하여 다음node.js의 함수에서 값 반환

var request = require('request'); 
var URL; 

var request = require('request'); 
request('http://www.google.com', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log(body) // Show the HTML for the Google homepage. 
    } 
}) 

function fetchURL (URL) { 
    request(URL, function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
     return body; 
     } 
    }); 
}; 

var a = fetchURL('http://www.google.com'); 
console.log(a); 
: 코드의 재사용 가능한 블록이 그렇게 생각으로 https://github.com/request/request

var request = require('request'); 
request('http://www.google.com', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
    console.log(body) // Show the HTML for the Google homepage. 
    } 
}) 

은 내가 매개 변수 등으로 URL을 전달하는 기능에 포장하려는 위를 만들려는

그러나이 작품은 "본문 반환"이 필요한지 여부를 확신 할 수 없으므로이 줄이 없어도 작동합니다. 내 코딩 스타일에 대한 의견이 너무 만족 스럽다.

+0

가능한 복제본 [비동기 호출에서 응답을 반환하는 방법] (http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous- 요구) – Quentin

답변

0

노드의 패턴은 비동기 함수에 대한 인수로 콜백을 제공합니다. 규칙에 따라이 콜백 함수의 첫 번째 인수는 error입니다. 당신의 코드에서, return body;fetchURL()에 전달 된 익명의 콜백 함수에서 반환이라고

function fetchURL(url, callback) { 
    request(url, function(error, response, body) { 
     if (!error && response.statusCode == 200) { 
     callback(null, body); 
     } else { 
     callback(error); 
     } 
    }); 
}; 

fetchURL('http://www.google.com', function(err, body) { 
    console.log(body); 
}); 

참고 : 예를 들면. fetchURL() 자체는 아무 것도 반환하지 않습니다.

관련 문제