2016-10-09 3 views
0
var content; 

fs.readFile(file.path, 'utf8', function(err, data) { 
    if ((path.extname(file.path)) == '.docx') { 
    mammoth.extractRawText({ 
     path: file.path 
     }) 
     .then(function(result) { 
     content = result.value; // The raw text 
     content = content.replace(/(\r\n|\n|\r)/gm, ""); 
     console.log(content); // Printing this 
     }) 
     .done(); 
    } 
    console.log(content); //Not printing this 
}) 

Почему контент не печатает внешнюю функцию, даже если переменная, объявленная снаружи?Не получать данные вне функции в JS

+0

Из-за асинхронной природы вы не можете получить значение, как это – abdulbarik

+0

Существовали несколько ошибок в коде. Я исправил их. Пожалуйста, проверьте. – thefourtheye

+0

любой способ получить такую ​​ценность? –

ответ

0

Я рекомендую использовать waterfall метод async модуля

var async = require('async'); 
async.waterfall([function(next) { 

    fs.readFile(file.path, 'utf8', function(err, data) { 
    if ((path.extname(file.path)) == '.docx') { 
     mammoth.extractRawText({ 
      path: file.path 
     }) 
     .then(function(result) { 
      content = result.value; // The raw text 
      content = content.replace(/(\r\n|\n|\r)/gm, ""); 
      console.log(content); // Printing this 
      next(null,content) 
     }) 
     .done(); 
    } 
    }) 

}], function(err, content) { 
    if (!err) { 
    console.log(content); 
    } 
}) 
Смежные вопросы