node.js使用请求模块返回文件的内容

肖纳克·班达卡(Shaunak Bhandarkar)

我正在学习如何在Node.js中读取json数据(针对walkscore.com api),并且找到了请求模块。我知道如何使其在“请求”块内执行操作。但是,我在函数中调用它,并且我希望该函数返回json数据。我如何能够简单地在函数内部但在请求块之外访问“ body”变量?

var request = require("request")

function loadWalkScore(lat, lon, address, name, state) {
   var address = encodeURI(address)
   var url = "http://api.walkscore.com/score?format=json&address=" + address
   url += "&lat=" + lat + "&lon=" + lon + "&wsapikey=" + wsapikey

   request(url, { json: true }, (err, res, body) => {
      if (err) { return console.log(err); }
      // somehow make loadWalkScore() function return <body>
   });
}
史蒂夫·凯莱特

您可能希望loadWalkScore接受一个回调参数,并在您的请求回调中调用它。在编写Node代码时,您的函数很少实际返回您所要求的数据,它们会接受(并最终调用)您提供的回调,或者返回Promises(最终会使用所请求的数据进行解析)。这是处理HTTP请求等异步操作的方法。

可能是这样的:

function loadWalkScore(lat, lon, address, name, state, cb) {
    ....
    request(url, { json: true }, (err, res, body) => {
        if (err) {
            console.log(err);
            cb(err);
        } else {
            cb(null, body);
        }
   });

然后像这样调用它:

loadWalkScore(...args..., function (err, body) {
    console.log('body:', body);
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章