异步分配视图的值

时间:2013-08-11 01:03:33

标签: javascript node.js callback

我只是在启动节点并尝试习惯异步行为,但是在渲染视图时我遇到了分配值的问题。代码库非常简单:

在自定义模块中:

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

我知道这不是你如何分配变量,但这是我正在拍摄的一般想法。我无法弄清楚只做这个简单的赋值的代码/节点方法

1 个答案:

答案 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函数转换为同步,然后就可以像在示例中一样使用它。