2017-07-02 279 views
0

https://github.com/codyc4321/Flashcard-Generator我有一个文件,我想将HTML生成器拆分成它自己的函数。gitignore使用主gitignore文件的子文件夹

该文件在js/main.js。此回调:

function generate_html(cards_array) { 
    // https://stackoverflow.com/questions/7083045/fs-how-do-i-locate-a-parent-folder 
    var webpage_path = __dirname + '/../index_generated.html'; 
    var template_path = __dirname + '/../index_template.html'; 
    var html; 
    var html = fs.readFile(template_path, 'utf-8', function(error, source) { 
     var template = handlebars.compile(source); 
     var data = { 
      cards: cardsArr 
     } 
     return template(data); 
    }); 
    return html 
} 

回报undefined,而不是由车把生成的HTML。如何从这个函数返回html?谢谢

回答

1

它返回undefined因为fs.readFile()是异步的。尝试使用fs.readFileSync()或使用在fs.readFile()响应中调用的回调函数。

function generate_html(cards_array, cb) { 
    // https://stackoverflow.com/questions/7083045/fs-how-do-i-locate-a-parent-folder 
    var webpage_path = __dirname + '/../index_generated.html'; 
    var template_path = __dirname + '/../index_template.html'; 
    fs.readFile(template_path, 'utf-8', function(error, source) { 
     var template = handlebars.compile(source); 
     var data = { 
      cards: cardsArr 
     } 
     cb(template(data)); 
    }); 
} 

cb是具有响应参数的回调函数。