1
我在節點js服務器上有一個REST API。當它收到一個GET請求時,它將調用一個將調用另一個服務器get函數的函數。代碼如下所示:處理異步http調用節點js
var server = http.createServer(function(request, response) {
console.log("YEAHHH! ", request.method);
var string='';
// Inside a request handler method
if (request.method == "OPTIONS") {
console.log("options");
// Add headers to response and send
//response.writeHead(statusCode, responseHeaders);
response.writeHead(success,responseHeaders);
response.end();
}
if(request.method == "GET") {
string = soso();
}
console.log("*******", string);
response.writeHead(success,responseHeaders);
response.end(string);
});
soso()
是對其他服務器的調用。問題是我想在它完成之前發送soso()函數的響應,所以我得到的是一個空字符串。
我該如何解決這個問題?
我相信這是一個重複,但不能完全找到我在找什麼。所以,任何幫助表示讚賞。
編輯
代碼爲索索功能:
var soso = function() {
console.log("this is being called");
var options = {...}
var req = https.get(options, function(res) {
var str = '';
res.on('data', function (chunk) {
str += chunk;
})
res.on('end', function() {
console.log ("str is: ", str);
string = str;
})
req.end();
console.log(res.statusCode);
console.log(responseHeaders);
});
}
哪裏了'索索()'的代碼? – jfriend00
看來你要做的是爲其他服務器做一個代理。有很多很多已有的代碼可以做到這一點。 – jfriend00
@ jfriend000個人最愛的任何鏈接? – discodane