我正在使用Express,在某个地方我需要这样做
所以我无法理解如何构建这个功能......我的意思是
router.get('/', function (req, res, next) {
res.render('nodes/index', {senders: helper.getServices(), receivers: helper.getReceivers()}
我的功能看起来像
this.getSenders = () => {
var options = { ... some opts }
request(options)
.then(function (body) {
return body
})
.catch(function (err) {
if (err) {
console.log(err)
}
})
}
使用此结构页面渲染数据将从函数返回... 我应该如何组织我的代码以避免这种情况?
答案 0 :(得分:0)
如果使用异步函数,则需要在呈现视图之前等待API的结果。如果使用async
来处理这2个异步请求,它会更快
路由器
router.get('/', function (req, res, next) {
async.parallel([
function(callback) {helper.getServices(callback)},
function(callback) {helper.getReceivers(callback)}
], function done(err, results){
if(error){
console.log(err);
return;
}
res.render('nodes/index', {
senders: results[0],
receivers: results[1]
})
})
})
功能:
this.getSenders = (callback) => {
var options = { ... some opts }
return request(options)
.then(function (body) {
callback(null,body)
})
.catch(function (err) {
callback(err, null)
})
}