Variable返回false,即使它显然是正确的[duplicate]

问题描述 投票:0回答:1
我有我最近的项目中的这段代码,我想知道为什么当我提供正确的输入时它返回false。我已经将控制台日志放到各处,并检查了所有内容。我尝试使用全局变量,临时变量,所有这些都到目前为止没有任何作用。

var directoryPath = path.join(__dirname, 'images'); var result = false; fs.readdir(directoryPath, function (err, files) { var local = false; //handling error if (err) { return console.log('Unable to scan directory: ' + err); } //listing all files using forEach files.forEach(function (file) { // Do whatever you want to do with the file if(file == password) { result = true; } }); }); return result

javascript node.js variables
1个回答
1
投票
在您看来,result是对的,但是运行您的代码的单个线程在以下方面看到了更多]]

var result = false fs.readdir(directoryPath, function (err, files) => {...}) // thread: i'll just set this off return result // thread: i'll return this immediately

因此,当您真正想要真实时,您会变得虚假。 [async/await
的操作方法如下

const main = async (directoryPath, password) => { let result = false let files try { files = await fs.promises.readdir(directoryPath) } catch (err) { return console.log('Unable to scan directory: ' + err); } files.forEach(file => { if (file == password) { result = true } }) return result // now result will be true if file == password }

© www.soinside.com 2019 - 2024. All rights reserved.