我正在学习如何在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] 删除。
我来说两句