gpt4 book ai didi

node.js - nodejs fs.exists (fs.access) 在 for 循环中发生了奇怪的事情

转载 作者:搜寻专家 更新时间:2023-11-01 00:20:42 25 4
gpt4 key购买 nike

我的代码:

for(var i=0; i<2; i++)
{
console.log("idx: " + i);

fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
console.log(err ? 'no access!'+i : 'can read/write'+i);
});

fs.exists('/etc/passwd', (exists) => {
console.log(exists ? 'it\'s there'+i : 'no passwd!'+i);
});
}

结果:
idx: 0
idx: 1
没有权限!2
它在那里2
没有权限!2
它在那里2

为什么我=2?
我该如何解决?

最佳答案

你的问题的关键是异步。 fs的两个方法都是异步的,后面会执行,执行的时候i的值为2,因为循环结束了。

解决它最简单的方法是通过 let 改变循环变量的声明

for(let i=0; i<2; i++)

它将 i 的范围限制为一次迭代

关于node.js - nodejs fs.exists (fs.access) 在 for 循环中发生了奇怪的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47649054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com