【发布时间】:2021-05-01 11:08:47
【问题描述】:
我正在编写一个 node.js 服务器脚本,它为多个客户端异步使用共享文本列表数据。
客户端可以读取、添加或更新此共享列表的项目。
static getitems(){
if (list== undefined) list = JSON.parse(fs.readFileSync("./list.json"));
return list;
}
static additem(newitem){
var key = Object.keys(newitem)[0];
list[key] = newitem[key];
fs.writeFileSync("./list.json", JSON.stringify(list));
}
客户端可以使用以下快速 API 修改和获取列表数据
app.get("/getlist"), (req, res)=>{
res.send(TempMan.getTemplates());
});
app.post("/addlist"), (req, res)=>{
additem(req.body.newitem)
res.status(204).end()
});
拥有 C#、C++ 和其他桌面编程语言的长期背景,虽然我红色的 javascript 没有遇到竞争条件,但我很担心资源共享会成为问题。我首先想到的是其他语言的信号量或共享锁或其他一些多线程管理解决方案,但是阅读 javascript 不需要这些方法。
这样的 node.js 实现是否会遇到资源共享问题,例如同时尝试文件读/写?我该如何解决这个问题?我需要某种可以在 javascript 中使用的事务函数吗?
【问题讨论】:
标签: javascript node.js express asynchronous race-condition