2017-07-02 290 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是具有響應參數的回調函數。