如何在节点js的readFile函数中添加Promises

时间:2019-09-26 13:25:02

标签: node.js

fs.readFile(answer, 'utf8', function (err, data) {
                    var dataArray = data.split(/\r?\n/).filter(entry => entry.trim() != '');
                 console.log(dataArray);  // **Line 1**
                 });
                 console.log(dataArray);  // **Line2**
        }

首先执行第2行代码,然后执行第1行

2 个答案:

答案 0 :(得分:1)

您可以使用readFileSync来实现同步。

var data = fs.readFileSync(answer, 'utf8');
var dataArray = data.split(/\r?\n/).filter(entry => entry.trim() != '');
console.log(dataArray);

答案 1 :(得分:0)

尝试以下操作:

function readFilePromisified(file) {
   return new Promise( (resolve, reject) => {
      fs.readFile(file, 'utf8', function (err, data) {
         if (err) {
            reject(err);
         } 
         const dataArray = data.split(/\r?\n/).filter(entry => entry.trim() != '');
         console.log(dataArray);  // **Line 1**
         resolve(dataArray);

      });

   });

}

然后您可以使用async/await

( async () => {
   const dataArray = await readFilePromisified(file); // this will print **Line 1** before it returns
   console.log(dataArray); **Line 2**
})();