javascript - 文件中的同时递增计数器
问题描述
我有一个整数文件,比如 10。
每个 http 请求我的 nodejs 应用程序从文件中读取整数,加 1 并写回结果:
fs.readFile(..., result => ...fs.writeFile(..., result + 1) );
如果两个 http 请求几乎同时到达,是否有可能同时读取10
和写入11
,或者文件最终总是包含12
?
如果不是后者,这应该如何解决,使其始终如此?
解决方案
我认为它应该对你有所帮助。我们只是检查我们的变量'proceeding',如果任务已经运行,我们等待它完成
const incrementor = {
proceeding : false,
result : 0,
doWork: async function(){
//waiting
while(proceeding){
//dont know should i use it in backend
await new Promise(resolve=>{
setTimeout(()=>{
resolve();
},5)
})
}
proceeding = true;
result = await fs.readFile('dwadwad.dwad');
result++;
fs.writeFileSync(..., result);
proceeding = false;
}
}
推荐阅读
- javascript - 在窗口调整大小时保持内容位置?
- reporting-services - SSRS 参数字段不会在“预览”模式下更新
- qt-creator - 时间轴播放头在移动时不更新关键帧值
- r - 如何在r中的图表中仅选择重复项
- powershell - 提取/下载 PowerBI .pbit 文件并自动保存到 Sharepoint 的可行性
- statistical-test - python中多列之间的Z测试
- azure - Azure 流体中继如何对应用程序的最终用户进行身份验证和授权?
- flask - 为什么我需要在 user() 方法中传递一个参数才能使这段代码成功运行?
- html - 具有不同目录的导航栏链接
- r - 在 ggplot geom_raster 可视化中更改字距