2016-06-12 66 views
0

當我在node.js服務器中使用請求模塊時,有一些問題,如等待和返回。如何等待請求響應並返回值?

我想在requestController上收到一個「responseObject」值。

爲了解決這個問題,我搜索了最好的方法,但我仍然沒有找到它。

如何解決這個問題?

預先感謝!! :)

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

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)); 
} 
+0

看起來你需要使用[纖維](https://www.npmjs.com/package/fibers) – Tdm

+0

你可以使用回調。 –

回答

3

您可以通過以下方式使用callbacks

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); 
    }); 
} 

而且

// 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 
} 

希望,它幫助。

+0

非常感謝您,它運作良好! :) – JaeYoungHwang