2014-01-24 49 views
1

我想設置使用下面的代碼的RESTify的node.js服務器:node.js中(的RESTify)服務器響應基於另一個HTTP(S)查詢

server.get('/querySomething', function(req, res) { 
    var toReturn = getSomethingElse(req.params); 
    res = toReturn; 
]); 

... 

var getSomethingElse = function(params) { 
    var somethingElse;   
    var opts = { 
    host: "some.host.com", 
     path: "/x", 
     method: "GET" 
    } 
    var req = https.request(opts, function(res) { 
     res.on('data', function(someResult) { 
     somethingElse = someResult; 
     }); 
    }); 

    return somethingElse; 
}; 

我體會到了 「https.request」調用異步執行。

那麼如何在返回調用結果之前「等待」調用返回 「/ querySomethingElse」http請求?

回答

1

我提到你在那裏這是錯誤的有「toReturn」的東西,你千萬不要跟你打電話的事件,當你完成異步代碼時返回任何東西。

使用快遞這樣做的一個方法是在東西的線路:

server.get('/querySomethingElse', function(request, response) { 

    var opts = { 
     host: "some.host.com", 
     path: "/x", 
     method: "GET" 
    } 

    var req = https.request(opts, function(res) { 
     res.on('data', function(someResult) { 
      response.send(someResult); 
     }); 
    }); 
}); 
相關問題