我是Node和Java的新手。我正在使用request模块从Web服务获取JSON响应。我不确定是否最好将我的请求转换为一个函数,或将请求嵌入另一个函数中。两种方式我都没有运气。
// Module imports
var express = require('express');
var router = express.Router();
var request = require('request');
var options = {
url: 'https:www.example.com/wow.json',
auth: {
user: 'user',
password: 'pass',
json: true
}
}
request(options, function (err, res, body) {
if (err) {
console.log(err);
return;
}
requestResult = JSON.parse(body); // All data
wowUsage = requestResult.publishers[0].used;
});
// Sending data to the template view
router.get('/', function(req, res, next) {
res.render('template', {tempVar: wowUsage});
});
module.exports = router;
每当我启动Web服务器时,此代码就会执行一次,然后完成。刷新页面不会加载任何新信息。我应该将请求嵌入功能中,然后在router.get语句中调用该功能吗?我试图将请求嵌套在一个函数中,但是我根本无法使该工作正常进行。
如果将请求放在单独的函数中,请确保将回调参数添加到使用适当数据调用的新函数中。例如:
function getJSON(callback) {
request(options, function(err, res, body) {
if (err)
return callback(err);
try {
callback(null, JSON.parse(body).publishers[0].used);
} catch (ex) {
callback(ex);
}
});
}
router.get('/', function(req, res, next) {
getJSON(function(err, wowUsage) {
if (err) {
console.log(err.stack);
return res.status(500);
}
res.render('template', {tempVar: wowUsage});
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句