假设我有一个全局键值对,对其进行的操作返回一个promise(实际上我正在使用Redis,并且它存储剩余的硬币值。
如果剩余数量大于0,则路由/路径使用请求中的数字减少硬币。
最初的值为10。现在,如果两个请求同时出现,分别为10和9,那么它们都可以读取长度为10的数据,并且出现不一致的地方吗?
我知道的是,promise具有回调,并且当第一个对getQuantity()的请求发出时,事件循环可以处理下一个请求,然后此请求可以读取数量为10的数字,这可能导致不一致。
app.get("/path",(req,res)=>{
const decrementBy=req.value;
const quantity=await obj.getQuantity();
if(quantity-decrementBy>=0){
await setQuantity(quantity-decrementBy);
}
res.send();
})