node.jsnpmnpm-request

How to wait a request response and return the value?


When I use a request module in node.js server, I have some problem such as wait and return.

I would like to receive a "responseObject" value at requestController.

To solve this problem, I have search the best way but I still do not find it.

How can solve this problem?

Thank in advance!! :)

=========================================================================

var requestToServer = require('request');

function getRequest(requestObject) {

    var urlInformation = requestObject['urlInformation'];
    var headerInformation = requestObject['headerInformation'];

    var jsonObject  = new Object( );

    // Creating the dynamic body set
    for(var i = 0; i < headerInformation.length; i++)
        jsonObject[headerInformation[i]['headerName']] = headerInformation[i]['headerValue'];

    requestToServer({
        url : urlInformation,
        method : 'GET',
        headers : jsonObject
    }, function(error, response ,body) {
        // todo response controlling
        var responseObject = response.headers;
        responseObject.body = body;
    });
}

// Controlling the submitted request
exports.requestController = function(requestObject) {
    var method = requestObject['methodInformation'];
    var resultObject = null;

    // Selecting the method
    if(method == "GET")
        resultObject = getRequest(requestObject);
    else if(method =="POST")
        resultObject = postRequest(requestObject);
    else if(method == "PUT")
        resultObject = putRequest(requestObject);
    else if(method == "DELETE")
        resultObject = deleteRequest(requestObject);

    console.log(JSON.stringify(resultObject));
}

Solution

  • You can use callbacks in the following way.

    function getRequest(requestObject, callback) {
        // some code
        requestToServer({
           url : urlInformation,
           method : 'GET',
           headers : jsonObject
        }, function(error, response ,body) {
           // todo response controlling
           var responseObject = response.headers;
           responseObject.body = body;
           callback(responseObject);
        }); 
    }
    

    And

    // Controlling the submitted request
    exports.requestController = function(requestObject) {
       var method = requestObject['methodInformation'];
    
       // Selecting the method
       if(method == "GET")
          getRequest(requestObject, function(resultObject){
              console.log(JSON.stringify(resultObject));
          });
    
       //some code
    }
    

    Hope, it helps.