Node.js NodeJS返回不停止整个函数

Node.js NodeJS返回不停止整个函数,node.js,return,fs,Node.js,Return,Fs,我有一个函数,enter,它包含两个fs.readFile函数,在最里面的readFile上,我正在检查一个txt文件是否包含某个关键字,如果包含,它应该停止整个enter函数 她是enter函数的样子: async function enter(email, firstName, lastName){ fs.readFile(fileName, function(err, data){ parsedData = JSON.parse(data); email = par

我有一个函数,enter,它包含两个fs.readFile函数,在最里面的readFile上,我正在检查一个txt文件是否包含某个关键字,如果包含,它应该停止整个enter函数

她是enter函数的样子:

async function enter(email, firstName, lastName){

  fs.readFile(fileName, function(err, data){
    parsedData = JSON.parse(data);

    email = parsedData.email;

    fs.readFile('./anotherfile.txt', function (err, data) {
      if (err) throw err;
      if(data.includes(email)){
        console.log('Stopping function');
        return;
      }
    });
  });

  console.log('Continuing with function');
}
问题是,当anotherfile.txt包含关键字时,它不会停止整个函数,而是继续并记录“continueingwithfunction”,如上面的代码所示

任何帮助都将不胜感激

fs承诺在v11.0.0节点上可用 或者您可以这样转换
const readFile=util.promisify(fs.readFile)

fs承诺在v11.0.0节点上可用 或者您可以这样转换
const readFile=util.promisify(fs.readFile)


这是因为两件事

  • 您正在使用异步文件读取,也就是说,调用此读取文件时,代码流不会停止。相反,程序将继续以正常方式执行。当文件读取操作完成时,将使用相应的错误或数据调用您提供的回调函数

  • return语句位于回调函数内部,因此它只会影响该函数


处理异步函数时,需要使用
wait
。查一查

这是因为两件事

  • 您正在使用异步文件读取,也就是说,调用此读取文件时,代码流不会停止。相反,程序将继续以正常方式执行。当文件读取操作完成时,将使用相应的错误或数据调用您提供的回调函数

  • return语句位于回调函数内部,因此它只会影响该函数


处理异步函数时,需要使用
wait
。查看一下

异步函数的wait在哪里?异步函数的wait在哪里?我建议不要将变量
fs
用于
fs.promises
,因为这会让阅读代码的人感到困惑,他们认为这是正常的
fs
模块,而不是
fs.promises
。您可以选择所需的任何其他变量名。在我的代码中,我使用
fsp
作为
const fsp=require('fs')。承诺
。使用单独符号的另一个原因是,您可能需要同时使用
fs
fsp
,因为您可能希望使用的某些方法仅在
fs
上。不幸的是,这对我的情况不起作用,因为将其更改为fs.promises会导致我的fs.readDir不再工作,通过它可以调用enter函数错误和检查日志也检查节点version@ManjeetThakur我刚刚安装了node的最新版本,没有错误,它只是不运行readdircheck文件名,请阅读我推荐的文档,不要将变量
fs
用于
fs.promissions
,因为这会让阅读您代码的人感到困惑,他们认为这是正常的
fs
模块,而不是
fs.promissions
。您可以选择所需的任何其他变量名。在我的代码中,我使用
fsp
作为
const fsp=require('fs')。承诺
。使用单独符号的另一个原因是,您可能需要同时使用
fs
fsp
,因为您可能希望使用的某些方法仅在
fs
上。不幸的是,这对我的情况不起作用,因为将其更改为fs.promises会导致我的fs.readDir不再工作,通过它可以调用enter函数错误和检查日志也检查节点version@ManjeetThakur我刚刚安装了node的最新版本,没有错误,它只是没有运行readdircheck文件名,请阅读文档
const fsp = require('fs').promises;

async function enter(email, firstName, lastName) {

    try {
        let data = await fsp.readFile(fileName)
        let parsedData = JSON.parse(data);
        let email = parsedData.email;
        data = await fsp.readFile('./anotherfile.txt')

        if (data.includes(email)) {
            console.log('Stopping function');
            return;
        }


        console.log('Continuing with function');


    } catch (err) {
        throw err
    }
}