2016-10-30 2 views
0

Я написал эту функцию:Nodejs http.get вернуть тело, когда запрос заканчивается

_sendGetRequest : function (query) { 
    http.get({ 
     host: elasticIp, 
     port: elasticPort, 
     path: "/logstash-2016.09.19/_search?source=" + 
     query 
    }, function (response) { 
     var body = ''; 
     response.on('data', function (d) { 
      body += d; 
     }); 
     response.on('end', function() { 
     //return body 
     }); 
    }); 

} 

Я хочу _sendGetRequest вернуть response.body только тогда, когда запрос HTTP заканчивается Как я могу сделать это с/без обещания?

+0

Это асинхронная природа вы можете использовать обратный вызов или обещание сделать это. – abdulbarik

ответ

0

Он работает в асинхронном режиме, вы можете использовать callback или promise, чтобы это сделать.

Вот пример с callback

_sendGetRequest: function(query,callback) { 
    http.get({ 
     host: elasticIp, 
     port: elasticPort, 
     path: "/logstash-2016.09.19/_search?source=" + 
     query 
    }, function(response) { 
     var body = ''; 
     response.on('data', function(d) { 
     body += d; 
     }); 
     response.on('end', function() { 
     //return body 
     callback(null,body); 
     }); 
    }); 

    } 

И позвони вы действуете как этот

_sendGetRequest(query,function(err,body){ 
    if(!err){ 
     console.log(body); 
    } 
    }) 
Смежные вопросы