2012-01-04 125 views
1

的getStockValue()函数是从以下列方式另一个JavaScript文件名为:如何从node.js中的HTTP请求函数返回值?

var r=require("./stockfile"); 
var returedData = r.getStockValue()); 

这里returnedData只包含 “-START-”。

我的目标是获得从函数返回的身体对象,接收到响应。我试过把一个return语句放入'关闭'事件处理程序中,但它不起作用。

我该怎么做?

function getStockValue() { 

    var http = require('http'); 

    var options = { 
     host: 'in.reuters.com', 
     path: '/finance/stocks/overview?symbol=RIBA.BO', 
     method: 'GET' 

    }; 

    var body = "--START--"; 

    var req = http.request(options, function (res) { 
     console.log('STATUS: ' + res.statusCode); 
     console.log('HEADERS: ' + JSON.stringify(res.headers)); 

     res.on('data', function (chunk) { 
      body += chunk; 

     }); 

     res.on('close', function() { 
      console.log("\n\nClose received!"); 
     }); 

    }); 

    req.on('error', function (e) { 
     console.log('problem with request: ' + e.message); 
    }); 
    req.end(); 

    return body + '... recieved'; 
} 

exports.getStockValue = getStockValue; 

回答

10

由于这是一个异步操作,如果将返回直线距离,并继续在后台运行,hense为什么你只收到-START-。你可以在回调函数的帮助下解决这个问题。继承人如何:

调用该函数如下:

r.getStockValue(function(result) { 
    var returedData = result 

    //... rest of your processing here 
})); 

getStockValue功能改变这种内:

function getStockValue(callback) { 
    ... 

    res.on('data', function (chunk) { 
     body += chunk; 
     callback(body); 
    }); 

    ... 
} 
+0

感谢会尽量回复您! :) – sbose 2012-01-04 17:51:29