2016-06-12 12 views
0

node.jsサーバーにリクエストモジュールを使用すると、waitやreturnなどの問題が発生します。リクエストレスポンスを待って値を返す方法はありますか?

私は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

あなたはコールバックを使用することができます – Tdm

+0

[繊維](https://www.npmjs.com/package/fibers)を使用する必要があるように見えます。 –

答えて

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

関連する問題