2

ノードを起動して非同期動作に慣れようとしていますが、ビューのレンダリングに関しては値の割り当てに問題があります。コード ベースは非常に単純です。

カスタムモジュールで:

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

それが変数の割り当て方法ではないことは知っていますが、それが私が目指している一般的な考え方です。この単純な割り当てを行うためのコード/ノードの方法がわかりません

4

1 に答える 1

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

関数が完了するまで戻ることができないため、 drawCard 関数へのコールバック内に res.render 呼び出しをラップしています。ただし、モジュールの初期化時にこれらのファイルをロードすることは可能です。次に、 drawCard 関数を同期に変換して、例のように使用できます。

于 2013-08-11T03:30:07.567 に答える