我只是在启动节点并尝试习惯异步行为,但是在渲染视图时我遇到了分配值的问题。代码库非常简单:
在自定义模块中:
var fs = require('fs')
exports.drawCard = function (color, callback) {
fs.readFile(color, 'utf-8', function(err, data) {
if (err) { callback(err); return }
var card = sample(data.split(/\n/))
callback(err, card)
})
}
路径文件中的:
exports.index = function(req, res){
var deck = require('./../deck.js')
console.log(newCard)
res.render('index', {
title: 'Bits AH',
//This is what I would like
card: deck.drawCard("green")
})
};
我知道这不是你如何分配变量,但这是我正在拍摄的一般想法。我无法弄清楚只做这个简单的赋值的代码/节点方法
答案 0 :(得分:2)
这是你想要的吗?
exports.index = function(req, res){
var deck = require('./../deck'); // No .js required
deck.drawCard(function(err, card) {
if(err) {
res.render('error');
return;
}
res.render('index', {
title: 'Bits AH',
card: card
});
});
};
你将res.render调用包装在drawCard函数的回调函数中,因为在函数完成之后才能返回。然而,在初始化模块时可以加载这些文件,然后您可以将drawCard函数转换为同步,然后就可以像在示例中一样使用它。