为视图asynchronous分配一个值

我只是启动节点,并尝试习惯asynchronous行为,但我有一个问题,当涉及到渲染视图分配一个值。 代码库非常简单:

在一个自定义模块中:

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") }) }; 

我知道这不是你如何分配variables,但这是我拍摄的一般想法。 我不能找出代码/节点的方式来做这个简单的任务

这是你要去的吗?

 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 }); }); }; 

您将callback函数中的res.render调用包装到drawCard函数中,因为直到函数完成后才能返回。 不过可以在模块初始化的时候加载这些文件,然后你可以将你的drawCard函数转换为同步的,然后你就可以像在你的例子中那样使用它了。