2016-06-13 3 views
1

Node.js를 사용하여 웹 스크래퍼를 설정하고 URL에서 일부 html을 가져 와서 변수로 저장하려고합니다. 벗겨진 버전이 뒤 따른다.Node.js가 변수로 html을 반환합니다.

var request = require('request'); 
var get_html = function(){ 
    var url = "http://www.google.com"; 
    var html = ''; 
    request.get(url,function(error, response, body){ 
     html += body; 
    }); 
    return html; 
}; 
console.log(get_html()); 

이 함수가 변수 html에 HTML을 연결할 수 있습니다 요청하기 전에 반환 것으로 보인다. 내가 볼 수있는 한 요청은 콜백 함수 내에서 html을 조작하거나 파일로 파이프하도록 허용합니다. 변수로 반환하는 방법이 있습니까?

답변

1

request.get은 비동기식이며 콜백 함수에서 결과를 반환합니다. 함수 콜백의 많은 아름답 지 외모와

당신은 조금이

var request = require('request'); 

// get_html receive callback to process result 
var get_html = function(callback) { 
    var url = "http://www.google.com"; 
    var html = ''; 
    request.get(url,function(error, response, body){ 
     return callback(body); // call callback and parse result to it 
    }); 
}; 

// call get_html function 
// and log html result here 
get_html(function (body) { console.log(body); }); 

코드와 같은 코드를 적용해야합니다. 콜백보다 약속을 선호합니다. promise를 사용하려면 'request-promise'lib를 시도하십시오.

+1

실제로 html을 문자열로 반환 할 방법이없는 것처럼 보이며 나머지 코드는 콜백으로 요청에 전달됩니다. 이 작은 함수를 다른 모듈에서 호출 할 수있는 유틸리티로 사용한다는 의미입니다. 이 문제는 신속하게 다루기 힘들어지는 것 같습니다. – mentoc3000

0

request.get은 비동기이므로, return html;을 콜백에 넣어야합니다. 그렇지 않으면 request.get이 실행을 완료 할 수 있기 바로 전에 즉시 반환됩니다.

관련 문제